diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c
index 6897ab2e364f87552f9204d068b36a3c78f3fb34..5e8b55661beaa93c6d5ae98602a1c361adb042b0 100644
--- a/src/sbbs3/sbbsecho.c
+++ b/src/sbbs3/sbbsecho.c
@@ -1525,6 +1525,7 @@ void alter_areas(str_list_t add_area, str_list_t del_area, fidoaddr_t addr, cons
 	unsigned u;
 	size_t add_count, added = 0;
 	size_t del_count, deleted = 0;
+	struct stat st = {0};
 
 	add_count = strListCount(add_area);
 	del_count = strListCount(del_area);
@@ -1541,6 +1542,8 @@ void alter_areas(str_list_t add_area, str_list_t del_area, fidoaddr_t addr, cons
 		fclose(nmfile);
 		return;
 	}
+	if(stat(cfg.areafile, &st) == 0)
+		fchmod(file, st.st_mode);
 	if((afileout=fdopen(file, "w+"))==NULL) {
 		lprintf(LOG_ERR,"ERROR %u (%s) line %d fdopening %s",errno,strerror(errno),__LINE__,outpath);
 		fclose(nmfile);