diff --git a/src/sbbs3/file.cpp b/src/sbbs3/file.cpp
index 449a7ebc229259a85937d03d85b1f30749adbbb4..0d12073a64c0a9a55806b2ce4535753ccbca04bf 100644
--- a/src/sbbs3/file.cpp
+++ b/src/sbbs3/file.cpp
@@ -43,7 +43,7 @@ void sbbs_t::showfileinfo(file_t* f, bool show_extdesc)
 			, byte_estimate_to_str(f->size, tmp2, sizeof(tmp2), /* units: */1024, /* precision: */1));
 
 	bprintf(P_TRUNCATE, text[FiCredits]
-		,(cfg.dir[f->dir]->misc&DIR_FREE || !f->cost) ? "FREE" : u64toac(f->cost,tmp));
+		,(cfg.dir[f->dir]->misc&DIR_FREE || (f->size > 0 && f->cost <= 0)) ? text[FREE] : u64toac(f->cost,tmp));
 	if(getfilesize(&cfg, f) > 0 &&  (uint64_t)f->size == smb_getfilesize(&f->idx)) {
 #if 0 // I don't think anyone cares about the CRC-16 checksum value of a file
 		if(f->file_idx.hash.flags & SMB_HASH_CRC16) {
@@ -166,7 +166,7 @@ bool sbbs_t::removefcdt(file_t* f)
 	long	cdt;
 
 	if((u=matchuser(&cfg,f->from,TRUE /*sysop_alias*/))==0) {
-	   bputs(text[UnknownUser]);
+	   bprintf(text[UnknownUploader], f->from, f->name);
 	   return(false); 
 	}
 	cdt=0L;
@@ -192,15 +192,15 @@ bool sbbs_t::removefcdt(file_t* f)
 				*f->cost*(cfg.dir[f->dir]->dn_pct/100.0));
 		if(dir_op(f->dir)) {
 			ultoa(cdt, str, 10);
-			bputs(text[CreditsToRemove]);
+			bprintf(text[CreditsToRemove], f->from);
 			getstr(str, 10, K_NUMBER|K_LINE|K_EDIT|K_AUTODEL);
 			if(msgabort(true))
 				return false;
-			cdt = atol(str); 
+			cdt = atol(str);
 		}
 		adjustuserval(&cfg, u, USER_CDT, -cdt);
 		sprintf(tmp,text[FileRemovedUserMsg]
-			,f->name,cdt ? ultoac(cdt,str) : text[No]);
+			,f->name,cdt > 0 ? ultoac(cdt,str) : text[No]);
 		putsmsg(u,tmp);
 	}
 
diff --git a/src/sbbs3/text.h b/src/sbbs3/text.h
index 158f27b601ff77fcf79e5c4996bec9e3b720b7b1..c6cda34b88ae686cea61eb141b6c7ff47b65993a 100644
--- a/src/sbbs3/text.h
+++ b/src/sbbs3/text.h
@@ -892,6 +892,8 @@ enum text {
 	,PasswordChar
 	,NodeConnectionSFTP
 	,QWKSettingsWrapText
+	,UnknownUploader
+	,FREE
 
 	,TOTAL_TEXT
 };
diff --git a/src/sbbs3/text_defaults.c b/src/sbbs3/text_defaults.c
index 8a2c7c219b8eb88bea3d66a1ce642870c139538c..66f05a668f2abd212503009f008f0bf930e27b44 100644
--- a/src/sbbs3/text_defaults.c
+++ b/src/sbbs3/text_defaults.c
@@ -411,7 +411,8 @@ const char * const text_defaults[TOTAL_TEXT]={
 	,"\x41\x64\x64\x20\x25\x73\x20\x74\x6f\x20\x25\x73\x20\x25\x73" // 246 AddToOfflineDirQ
 	,"\x52\x65\x6d\x6f\x76\x65\x20\x63\x72\x65\x64\x69\x74\x73" // 247 RemoveCreditsQ
 	,"\x0d\x0a\x55\x73\x65\x72\x20\x6e\x6f\x74\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x2e\x0d\x0a" // 248 UserNotFound
-	,"\x01\x5f\x01\x79\x01\x68\x43\x72\x65\x64\x69\x74\x73\x20\x74\x6f\x20\x72\x65\x6d\x6f\x76\x65\x3a\x20\x01\x6e" // 249 CreditsToRemove
+	,"\x01\x5f\x01\x79\x01\x68\x43\x72\x65\x64\x69\x74\x73\x20\x74\x6f\x20\x72\x65\x6d\x6f\x76\x65\x20\x66\x72\x6f\x6d\x20\x75\x70\x6c"
+		"\x6f\x61\x64\x65\x72\x20\x28\x25\x73\x29\x3a\x20\x01\x6e" // 249 CreditsToRemove
 	,"\x01\x5f\x01\x77\x01\x68\x25\x73\x20\x77\x61\x73\x20\x72\x65\x6d\x6f\x76\x65\x64\x2e\x0d\x0a\x01\x6e\x01\x67\x59\x6f\x75\x20\x6c"
 		"\x6f\x73\x74\x20\x25\x73\x20\x63\x72\x65\x64\x69\x74\x73\x2e\x0d\x0a" // 250 FileRemovedUserMsg
 	,"\x01\x5f\x01\x3f\x01\x79\x01\x68\x46\x69\x6c\x65\x6e\x61\x6d\x65\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3a\x20\x01\x6e" // 251 EditFilename
@@ -1328,7 +1329,7 @@ const char * const text_defaults[TOTAL_TEXT]={
 		"" // 797 MIMEDecodedPlainTextFmt
 	,"\x01\x2f\x40\x45\x58\x45\x43\x3a\x53\x48\x4f\x57\x4d\x53\x47\x41\x56\x41\x54\x41\x52\x40\x0d\x0a" // 798 MsgHdrBodySeparator
 	,"\x01\x2f\x0d\x0a\x40\x45\x58\x45\x43\x3a\x53\x48\x4f\x57\x46\x49\x4c\x45\x41\x56\x41\x54\x41\x52\x40" // 799 FileHdrDescSeparator
-	,"\x52\x65\x6d\x6f\x76\x65\x20\x66\x69\x6c\x65" // 800 RemoveFileQ
+	,"\x52\x65\x6d\x6f\x76\x65\x20\x66\x69\x6c\x65\x20\x66\x72\x6f\x6d\x20\x64\x61\x74\x61\x62\x61\x73\x65" // 800 RemoveFileQ
 	,"\x4f\x72\x69\x67\x69\x6e\x61\x74\x69\x6e\x67\x20\x41\x64\x64\x72\x65\x73\x73" // 801 OriginFidoAddr
 	,"\x01\x6e\x01\x68\xfb\x20\x01\x6d\x25\x2e\x37\x37\x73\x0d\x0a" // 802 VoteNoticeFmt
 	,"\x0d\x0a\x54\x61\x67\x20\x74\x68\x69\x73\x20\x6d\x65\x73\x73\x61\x67\x65" // 803 TagMessageQ
@@ -1432,4 +1433,7 @@ const char * const text_defaults[TOTAL_TEXT]={
 	,"\x20\x76\x69\x61\x20\x73\x66\x74\x70" // 874 NodeConnectionSFTP
 	,"\x01\x6e\x01\x62\x5b\x01\x68\x01\x77\x57\x01\x6e\x01\x62\x5d\x20\x01\x68\x57\x6f\x72\x64\x2d\x77\x72\x61\x70\x20\x4d\x65\x73\x73"
 		"\x61\x67\x65\x20\x54\x65\x78\x74\x20\x20\x20\x20\x20\x20\x20\x01\x6e\x01\x62\x3a\x20\x01\x63\x25\x73\x0d\x0a" // 875  QWKSettingsWrapText
+	,"\x01\x2f\x55\x6e\x6b\x6e\x6f\x77\x6e\x20\x75\x70\x6c\x6f\x61\x64\x65\x72\x20\x28\x25\x73\x29\x20\x6f\x66\x20\x66\x69\x6c\x65\x3a"
+		"\x20\x25\x73" // 877 UnknownUploader
+	,"\x46\x52\x45\x45" // 878 FREE
 };
diff --git a/src/sbbs3/text_id.c b/src/sbbs3/text_id.c
index b4b391fb6d1bcec85bb156a6ae6fb8c53009c60a..ecff0bd96121ddbb9ca489664dba7b2b0d14ac3a 100644
--- a/src/sbbs3/text_id.c
+++ b/src/sbbs3/text_id.c
@@ -876,4 +876,6 @@ const char* const text_id[]={
 	,"PasswordChar"
 	,"NodeConnectionSFTP"
 	,"QWKSettingsWrapText"
+	,"UnknownUploader"
+	,"FREE"
 };