diff --git a/src/sbbs3/menuedit/menuedit.c b/src/sbbs3/menuedit/menuedit.c
index a754428a6138823f9ff332c99e369f4fbed5bb3f..c73d3f1a88e76c15717ec1a7532d22655cb39bef 100644
--- a/src/sbbs3/menuedit/menuedit.c
+++ b/src/sbbs3/menuedit/menuedit.c
@@ -44,12 +44,11 @@
 
 uifcapi_t uifc; /* User Interface (UIFC) Library API */
 
-static int yesno(char *prompt, BOOL dflt)
+static int yesno(char *prompt, int dflt)
 {
 	char*	opt[]={"Yes","No",NULL};
-	int		i=dflt ? 0:1;
 
-	return(uifc.list(WIN_MID|WIN_SAV,0,0,0,&i,0,prompt,opt));
+	return(uifc.list(WIN_MID|WIN_SAV,0,0,0,&dflt,0,prompt,opt));
 }
 
 static void edit_menu(char* path)
@@ -62,6 +61,8 @@ static void edit_menu(char* path)
 	char*	opt[MAX_OPTS+1];
 	char	prompt[256];
 	const char* opt_fmt = "%-25.25s %s";
+	str_list_t	list;
+	ini_style_t style;
 
 	/* Open menu file */
 	if((fp=fopen(path,"r"))==NULL) {
@@ -93,7 +94,7 @@ static void edit_menu(char* path)
 				i=yesno("Save Changes",TRUE);
 				if(i==-1)
 					continue;
-				if(i==FALSE)
+				if(i==1)
 					uifc.changes=0;
 			}
 			break;
@@ -104,6 +105,33 @@ static void edit_menu(char* path)
 				break;
 		}
 	}
+
+	if(uifc.changes) {	/* Saving changes? */
+
+		/* Open menu file */
+		if((fp=fopen(path,"r+"))==NULL) {
+			sprintf(str,"ERROR %u opening %s",errno,path);
+			uifc.msg(str);
+			return;
+		}
+
+		/* Set .ini style */
+		memset(&style, 0, sizeof(style));
+		style.value_separator=": ";
+
+		/* Read menu file */
+		if((list=iniReadFile(fp))!=NULL) {
+
+			/* Update options */
+			iniSetString(&list,ROOT_SECTION,"prompt",prompt,&style);
+
+			/* Write menu file */
+			iniWriteFile(fp,list);
+			strListFree(&list);
+		}
+
+		fclose(fp);
+	}
 }
 
 int main(int argc, char **argv)
@@ -173,7 +201,7 @@ int main(int argc, char **argv)
 			,"Edit Menu",opt);
 		if(i==-1)
 			break;
-		if(i>=0 && i<g.gl_pathc)
+		if(i>=0 && i<(int)g.gl_pathc)
 			edit_menu(g.gl_pathv[i]);
 		globfree(&g);
 	}