diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index f208e4465720e05dfd781ddc665596d8b9183078..d19cba189417e8b14cbaf5575e4425be8a351c8b 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -1714,12 +1714,15 @@ static void receive_thread(void* arg)
 						break;
 				if(i<scfg.total_fextrs) {
 					sprintf(tmp,"%sFILE_ID.DIZ",scfg.temp_dir);
-					remove(tmp);
+					if(fexistcase(tmp))
+						remove(tmp);
 					system(cmdstr(xfer.user,scfg.fextr[i]->cmd,fname,"FILE_ID.DIZ",cmd));
-					if(!fexist(tmp)) {
+					if(!fexistcase(tmp)) {
 						sprintf(tmp,"%sDESC.SDI",scfg.temp_dir);
-						remove(tmp);
+						if(fexistcase(tmp))
+							remove(tmp);
 						system(cmdstr(xfer.user,scfg.fextr[i]->cmd,fname,"DESC.SDI",cmd)); 
+						fexistcase(tmp);	/* fixes filename case */
 					}
 					if((file=nopen(tmp,O_RDONLY))!=-1) {
 						memset(ext,0,sizeof(ext));