diff --git a/exec/upgrade_to_v320.js b/exec/upgrade_to_v320.js
index 415faa92d20b3671bc56bbf0b396e08493cb0d31..5e41102bf4c8f4ebb9318cd6bae5f9ae5a592ecd 100755
--- a/exec/upgrade_to_v320.js
+++ b/exec/upgrade_to_v320.js
@@ -118,6 +118,7 @@ if(node_settings & NM_LOGON_P)
 	cnf.login |= LOGIN_PWPROMPT;
 if(!(node_settings & NM_NO_NUM))
 	cnf.login |= LOGIN_USERNUM;
+cnf.spinning_pause_prompt = (node_settings & NM_NOPAUSESPIN) ? "false" : "true";
 
 for(var i in cnf.validation_set)
 	ini.iniSetObject("valset:" + i, cnf.validation_set[i]);
diff --git a/src/sbbs3/getkey.cpp b/src/sbbs3/getkey.cpp
index b26f5a1ee0fc0dcafb0dc609988aa6291c6e6314..fedcccd048c28c46d64b3f4858c7ce3efebbf15e 100644
--- a/src/sbbs3/getkey.cpp
+++ b/src/sbbs3/getkey.cpp
@@ -438,7 +438,7 @@ bool sbbs_t::pause(bool set_abort)
 	bputs(text[Pause]);
 	len = bstrlen(text[Pause]);
 	if(sys_status&SS_USERON && !(useron.misc&(HTML|WIP|NOPAUSESPIN))
-		&& !(cfg.node_misc&NM_NOPAUSESPIN))
+		&& cfg.spinning_pause_prompt)
 		l|=K_SPIN;
 	ch=getkey(l);
 	if(pause_hotspot) {
diff --git a/src/sbbs3/scfg/scfgnode.c b/src/sbbs3/scfg/scfgnode.c
index 94381f0b1f2199b3f288d755c0a1fae8c02ba5c6..5a0663517caefdeee38a852734cab7eb942b7e94 100644
--- a/src/sbbs3/scfg/scfgnode.c
+++ b/src/sbbs3/scfg/scfgnode.c
@@ -238,8 +238,6 @@ void node_cfg()
 				done=0;
 				while(!done) {
 					i=0;
-					snprintf(opt[i++], MAX_OPLN, "%-27.27s%s","Spinning Pause Prompt"
-						,cfg.node_misc&NM_NOPAUSESPIN ? "No":"Yes");
 					snprintf(opt[i++], MAX_OPLN, "%-27.27s%s","Keep Node File Open"
 						,cfg.node_misc&NM_CLOSENODEDAB ? "No":"Yes");
 
@@ -258,25 +256,6 @@ void node_cfg()
 							done=1;
 							break;
 						case 0:
-							i=cfg.node_misc&NM_NOPAUSESPIN ? 1:0;
-							uifc.helpbuf=
-								"`Spinning Pause Prompt:`\n"
-								"\n"
-								"If you want to display a spinning cursor at the [Hit a key] prompt,\n"
-								"set this option to `Yes`.\n"
-							;
-							i=uifc.list(WIN_MID|WIN_SAV,0,10,0,&i,0
-								,"Spinning Cursor at Pause Prompt",uifcYesNoOpts);
-							if(i==0 && cfg.node_misc&NM_NOPAUSESPIN) {
-								cfg.node_misc&=~NM_NOPAUSESPIN;
-								uifc.changes=1;
-							}
-							else if(i==1 && !(cfg.node_misc&NM_NOPAUSESPIN)) {
-								cfg.node_misc|=NM_NOPAUSESPIN;
-								uifc.changes=1;
-							}
-							break;
-						case 1:
 							i=cfg.node_misc&NM_CLOSENODEDAB ? 1:0;
 							uifc.helpbuf=
 								"`Keep Node File Open:`\n"
diff --git a/src/sbbs3/scfg/scfgsys.c b/src/sbbs3/scfg/scfgsys.c
index 82fcd82a0181e289f8379bf4fc10d9c168f26d11..29f95875ddf02bc9d87180f61e90577d645322ba 100644
--- a/src/sbbs3/scfg/scfgsys.c
+++ b/src/sbbs3/scfg/scfgsys.c
@@ -1755,6 +1755,8 @@ void sys_cfg(void)
 						,cfg.sys_misc&SM_NONODELIST ? "No" : "Yes");
 					snprintf(opt[i++], MAX_OPLN, "%-35s%s","Mouse Hot-spots in Menus/Prompts"
 						,cfg.sys_misc&SM_MOUSE_HOT ? "Yes" : "No");
+					snprintf(opt[i++], MAX_OPLN, "%-35s%s","Spinning Cursor at Pause Prompts"
+						,cfg.spinning_pause_prompt ? "Yes" : "No");
 					opt[i][0]=0;
 					uifc.helpbuf=
 						"`System Toggle Options:`\n"
@@ -1919,6 +1921,20 @@ void sys_cfg(void)
 								cfg.sys_misc |= SM_MOUSE_HOT;
 							}
 							break;
+						case 10:
+							i=cfg.spinning_pause_prompt ? 0:1;
+							uifc.helpbuf=
+								"`Spinning Cursor at Pause Prompts:`\n"
+								"\n"
+								"If you want to display a spinning cursor at the [Hit a key] prompt,\n"
+								"set this option to `Yes`.\n"
+							;
+							i=uifc.list(WIN_MID|WIN_SAV,0,10,0,&i,0
+								,"Spinning Cursor at Pause Prompts",uifcYesNoOpts);
+							if(i >= 0)
+								cfg.spinning_pause_prompt = !cfg.spinning_pause_prompt;
+							break;
+
 						}
 					}
 				break;
diff --git a/src/sbbs3/scfgdefs.h b/src/sbbs3/scfgdefs.h
index af782e784947e8aedb2c4da3597512d23dca7225..660f6acffee4a97d6f000546741863256b01647c 100644
--- a/src/sbbs3/scfgdefs.h
+++ b/src/sbbs3/scfgdefs.h
@@ -488,6 +488,7 @@ typedef struct
 
 	char			node_daily[LEN_CMD+1];	/* Name of node's daily event */
 	uint32_t		node_misc;			/* Misc bits for node setup */
+	bool			spinning_pause_prompt;
 	uint16_t		valuser;			/* User validation mail goes to */
 	uint16_t		erruser;			/* User error messages goes to */
 	uchar			errlevel;			/* Log level threshold to notify user (erruser) */
diff --git a/src/sbbs3/scfglib1.c b/src/sbbs3/scfglib1.c
index cda1bbd196f699823fb84c0941ed64cf8d693904..90f724f6f10a2e4d46014433ebc3549766697889 100644
--- a/src/sbbs3/scfglib1.c
+++ b/src/sbbs3/scfglib1.c
@@ -123,6 +123,7 @@ bool read_main_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
 	cfg->ctrlkey_passthru = iniGetInteger(ini, ROOT_SECTION, "ctrlkey_passthru", 0);
 	cfg->max_getkey_inactivity = (uint)iniGetDuration(ini, ROOT_SECTION, "max_getkey_inactivity", 300);
 	cfg->inactivity_warn = (uchar)iniGetUInteger(ini, ROOT_SECTION, "inactivity_warn", 75);
+	cfg->spinning_pause_prompt = iniGetBool(ini, ROOT_SECTION, "spinning_pause_prompt", true);
 
 	cfg->user_backup_level = iniGetUInteger(ini, ROOT_SECTION, "user_backup_level", 5);
 	cfg->mail_backup_level = iniGetUInteger(ini, ROOT_SECTION, "mail_backup_level", 5);
diff --git a/src/sbbs3/scfgsave.c b/src/sbbs3/scfgsave.c
index 6f7870e9d245a6b0fb017d298866cbe37d465fa5..1541e7e482a21140600b600e37be772e814c6082 100644
--- a/src/sbbs3/scfgsave.c
+++ b/src/sbbs3/scfgsave.c
@@ -143,6 +143,7 @@ bool write_main_cfg(scfg_t* cfg)
 	iniSetHexInt(&ini, ROOT_SECTION, "ctrlkey_passthru", cfg->ctrlkey_passthru, NULL);
 	iniSetDuration(&ini, ROOT_SECTION, "max_getkey_inactivity", cfg->max_getkey_inactivity, NULL);
 	iniSetUInteger(&ini, ROOT_SECTION, "inactivity_warn", cfg->inactivity_warn, NULL);
+	iniSetBool(&ini, ROOT_SECTION, "spinning_pause_prompt", cfg->spinning_pause_prompt, NULL);
 	iniSetUInteger(&ini, ROOT_SECTION, "user_backup_level", cfg->user_backup_level, NULL);
 	iniSetUInteger(&ini, ROOT_SECTION, "mail_backup_level", cfg->mail_backup_level, NULL);
 	iniSetUInteger(&ini, ROOT_SECTION, "config_backup_level", cfg->config_backup_level, NULL);