diff --git a/src/sbbs3/scfg/scfg.c b/src/sbbs3/scfg/scfg.c
index 5fcce1b13e84f96f97458c6122084dec1694ff76..8fde57e4fd65e4840c548ee3b4145a7f33f7b318 100644
--- a/src/sbbs3/scfg/scfg.c
+++ b/src/sbbs3/scfg/scfg.c
@@ -385,7 +385,10 @@ void cfg_wizard(void)
 					"                                               digital man (rob)\n"
 					);
 				char* opts[] = { "Save Changes", "Discard Changes", NULL };
-				if(uifc.list(WIN_SAV | WIN_L2R | WIN_NOBRDR, 0, 14 ,0, NULL, NULL, NULL, opts) != 0) {
+				int sc = uifc.list(WIN_SAV | WIN_L2R | WIN_NOBRDR | WIN_ATEXIT, 0, 14 ,0, NULL, NULL, NULL, opts);
+				if(sc != 0) {
+					if (sc == -1)
+						uifc.exit_flags &= ~UIFC_XF_QUIT;
 					stage = -1;
 					continue;
 				}
@@ -1158,8 +1161,11 @@ int save_changes(int mode)
 		"these changes, select `No`. If you are not sure and want to review the\n"
 		"configuration before deciding, hit ~ ESC ~.\n"
 	;
-	i=uifc.list(mode|WIN_SAV,0,0,0,&i,0,"Save Changes",uifcYesNoOpts);
-	if(i!=-1)
+	i=uifc.list(mode|WIN_SAV|WIN_ATEXIT,0,0,0,&i,0,"Save Changes",uifcYesNoOpts);
+	if (i == -1) {
+		uifc.exit_flags &= ~UIFC_XF_QUIT;
+	}
+	else
 		uifc.changes=0;
 	return(i);
 }