diff --git a/src/sbbs3/scfg/scfgnode.c b/src/sbbs3/scfg/scfgnode.c
index 763e79f5e7057ec4ea668f502299daba17dcd4f5..15a7f6d8738c49572058c829bf60261d7b930930 100644
--- a/src/sbbs3/scfg/scfgnode.c
+++ b/src/sbbs3/scfg/scfgnode.c
@@ -18,6 +18,7 @@
  ****************************************************************************/
 
 #include "scfg.h"
+#include "sbbs_ini.h"
 
 static char* node_path_help =
 	"`Node Directory:`\n"
@@ -29,6 +30,29 @@ static char* node_path_help =
 	"that can be accessed by `ALL` nodes of the BBS.\n"
 ;
 
+void adjust_last_node()
+{
+	char ini_fname[MAX_PATH + 1];
+	const char* section = "bbs";
+	const char* key = "LastNode";
+
+	sbbs_get_ini_fname(ini_fname, cfg.ctrl_dir);
+
+	FILE* fp = iniOpenFile(ini_fname, /* modify */false);
+	str_list_t ini = iniReadFile(fp);
+	iniCloseFile(fp);
+	uint last_node = iniGetUInteger(ini, section, key, cfg.sys_nodes);
+	char prompt[128];
+	SAFEPRINTF(prompt, "Update Terminal Server 'LastNode' value to %u", cfg.sys_nodes);
+	if(last_node < cfg.sys_nodes && uifc.confirm(prompt)) {
+		fp = iniOpenFile(ini_fname, /* modify */true);
+		iniSetUInteger(&ini, section, key, cfg.sys_nodes, NULL);
+		iniWriteFile(fp, ini);
+		iniCloseFile(fp);
+	}
+	iniFreeStringList(ini);
+}
+
 void node_menu()
 {
 	char	str[81],savnode=0;
@@ -92,6 +116,7 @@ void node_menu()
 				--cfg.sys_nodes;
 				cfg.new_install=new_install;
 				save_main_cfg(&cfg,backup_level);
+				adjust_last_node();
 				refresh_cfg(&cfg);
 			}
 			continue;
@@ -112,7 +137,7 @@ void node_menu()
 			}
 			sprintf(tmp,"Node %d Directory",i);
 			uifc.helpbuf=node_path_help;
-			j=uifc.input(WIN_MID,0,0,tmp,str,50,K_EDIT);
+			j=uifc.input(WIN_MID|WIN_SAV,0,0,tmp,str,50,K_EDIT);
 			uifc.changes=0;
 			if(j<2)
 				continue;
@@ -125,6 +150,7 @@ void node_menu()
 			save_node_cfg(&cfg,backup_level);
 			save_main_cfg(&cfg,backup_level);
 			free_node_cfg(&cfg);
+			adjust_last_node();
 			refresh_cfg(&cfg);
 			continue;
 		}