diff --git a/src/sbbs3/scfg/scfg.c b/src/sbbs3/scfg/scfg.c
index 64e10b0cae3d2ebef798ca1fe3ff5e8cadba841a..596a5247e5fcafb3d2fa1c903631cb3617395641 100644
--- a/src/sbbs3/scfg/scfg.c
+++ b/src/sbbs3/scfg/scfg.c
@@ -27,6 +27,7 @@
 #include "git_branch.h"
 #include "cryptlib.h"
 #include "xpdatetime.h"
+#include "sbbs_ini.h"
 
 /********************/
 /* Global Variables */
@@ -2451,6 +2452,16 @@ void bail(int code)
 		(void)getchar();
 	}
     else if(forcesave) {
+		FILE* fp;
+		BOOL run_bbs, run_ftp, run_web, run_mail, run_services;
+		global_startup_t global_startup = {0};
+		bbs_startup_t bbs_startup = {0};
+		web_startup_t web_startup = {0};
+		ftp_startup_t ftp_startup = {0};
+		mail_startup_t mail_startup = {0};
+		services_startup_t services_startup = {0};
+
+		uifc.pop("Force-saving configuration files...");
         load_main_cfg(&cfg, error, sizeof(error));
         load_msgs_cfg(&cfg, error, sizeof(error));
         load_file_cfg(&cfg, error, sizeof(error));
@@ -2461,7 +2472,47 @@ void bail(int code)
         save_msgs_cfg(&cfg,backup_level);
         save_file_cfg(&cfg,backup_level);
         save_chat_cfg(&cfg,backup_level);
-        save_xtrn_cfg(&cfg,backup_level);
+		save_xtrn_cfg(&cfg,backup_level);
+
+		sbbs_get_ini_fname(cfg.filename, cfg.ctrl_dir);
+
+		fp = iniOpenFile(cfg.filename, /* for_modify? */false);
+		if(fp == NULL)
+			uifc.msgf("Error opening %s", cfg.filename);
+		else {
+			sbbs_read_ini(
+				 fp
+				,cfg.filename
+				,&global_startup
+				,&run_bbs
+				,&bbs_startup
+				,&run_ftp
+				,&ftp_startup
+				,&run_web
+				,&web_startup
+				,&run_mail
+				,&mail_startup
+				,&run_services
+				,&services_startup
+				);
+			sbbs_write_ini(
+				 fp
+				,&cfg
+				,&global_startup
+				,run_bbs
+				,&bbs_startup
+				,run_ftp
+				,&ftp_startup
+				,run_web
+				,&web_startup
+				,run_mail
+				,&mail_startup
+				,run_services
+				,&services_startup
+				);
+			iniCloseFile(fp);
+		}
+        uifc.pop(NULL);
 	}
 
 	uifc.pop("Exiting");