diff --git a/src/sbbs3/scfgsave.c b/src/sbbs3/scfgsave.c
index 7f48181fb3111898b4dafc82c651361aa7abb6eb..eee8f042a1481bf2a58c22cc5023e90dcef610d0 100644
--- a/src/sbbs3/scfgsave.c
+++ b/src/sbbs3/scfgsave.c
@@ -162,9 +162,18 @@ BOOL DLLCALL backup(char *fname, int backup_level, BOOL ren)
 			if(ren == TRUE) {
 				if(rename(fname,newname)!=0)
 					return(FALSE);
-			} else 
+			} else {
+				struct utimbuf ut;
+
+				/* preserve the original time stamp */
+				ut.modtime = fdate(fname);
+
 				if(!fcopy(fname,newname))
 					return(FALSE);
+
+				ut.actime = time(NULL);
+				utime(newname, &ut);
+			}
 			continue; 
 		}
 		safe_snprintf(oldname,sizeof(oldname),"%.*s.%d%s",len,fname,i-2,ext);