diff --git a/src/sbbs3/getkey.cpp b/src/sbbs3/getkey.cpp
index b1e1ff9b01ec6c1138605649b2ac4cf66914ad66..c3e69146c898461a2d810c7d957b74c02dc2b595 100644
--- a/src/sbbs3/getkey.cpp
+++ b/src/sbbs3/getkey.cpp
@@ -44,7 +44,8 @@
 /****************************************************************************/
 char sbbs_t::getkey(long mode)
 {
-	uchar	ch,coldkey,c=0,spin=sbbs_random(5);
+	uchar	ch, coldkey, spin = sbbs_random(10);
+	ulong	c = sbbs_random(5);
 	time_t	last_telnet_cmd=0;
 	long	term = term_supports();
 
@@ -70,145 +71,11 @@ char sbbs_t::getkey(long mode)
 		}
 
 		if(mode&K_SPIN) {
-			if(term&NO_EXASCII) {
-				switch(c++) {
-					case 0:
-						outchar(BS);
-						outchar('|');
-						break;
-					case 1:
-						outchar(BS);
-						outchar('/');
-						break;
-					case 2:
-						outchar(BS);
-						outchar('-');
-						break;
-					case 3:
-						outchar(BS);
-						outchar('\\');
-						c=0;
-						break;
-				}
-			} else {
-				switch(spin) {
-					case 0:
-						switch(c++) {
-							case 0:
-								outchar(BS);
-								outchar('�');
-								break;
-							case 1:
-								outchar(BS);
-								outchar('/');
-								break;
-							case 2:
-								outchar(BS);
-								outchar('�');
-								break;
-							case 3:
-								outchar(BS);
-								outchar('\\');
-								c=0;
-								break;
-						}
-						break;
-					case 1:
-						switch(c++) {
-							case 0:
-								outchar(BS);
-								outchar('�');
-								break;
-							case 1:
-								outchar(BS);
-								outchar('�');
-								break;
-							case 2:
-								outchar(BS);
-								outchar('�');
-								break;
-							case 3:
-								outchar(BS);
-								outchar('�');
-								break;
-							case 4:
-								outchar(BS);
-								outchar('�');
-								break;
-							case 5:
-								outchar(BS);
-								outchar('�');
-								c=0;
-								break;
-						}
-						break;
-					case 2:
-						switch(c++) {
-							case 0:
-								outchar(BS);
-								outchar('-');
-								break;
-							case 1:
-								outchar(BS);
-								outchar('=');
-								break;
-							case 2:
-								outchar(BS);
-								outchar('�');
-								break;
-							case 3:
-								outchar(BS);
-								outchar('=');
-								c=0;
-								break;
-						}
-						break;
-					case 3:
-						switch(c++) {
-							case 0:
-								outchar(BS);
-								outchar('�');
-								break;
-							case 1:
-								outchar(BS);
-								outchar('�');
-								break;
-							case 2:
-								outchar(BS);
-								outchar('�');
-								break;
-							case 3:
-								outchar(BS);
-								outchar('�');
-								c=0;
-								break;
-						}
-						break;
-					case 4:
-						switch(c++) {
-							case 0:
-								outchar(BS);
-								outchar('�');
-								break;
-							case 1:
-								outchar(BS);
-								outchar('�');
-								break;
-							case 2:
-								outchar(BS);
-								outchar('�');
-								break;
-							case 3:
-								outchar(BS);
-								outchar('�');
-								c=0;
-								break;
-						}
-						break; 
-				}
-			}
+			char* cursor = text[SpinningCursor0  + spin];
+			outchar('\b');
+			outchar(cursor[(c++) % strlen(cursor)]);
 		}
-		ch=inkey(mode,mode&K_SPIN ? 250:1000);
+		ch=inkey(mode,mode&K_SPIN ? 200:1000);
 		if(sys_status&SS_ABORT)
 			return(0);
 		now=time(NULL);
diff --git a/src/sbbs3/text.h b/src/sbbs3/text.h
index 83d59069c10e71bfdeb436f6ad1ba08357a92e62..8357736798594951d28dd93dffd128528130f5b1 100644
--- a/src/sbbs3/text.h
+++ b/src/sbbs3/text.h
@@ -843,6 +843,16 @@ enum {
 	,NodeConnectionRaw
 	,MouseTerminalQ
 	,TerminalMouse
+	,SpinningCursor0
+	,SpinningCursor1
+	,SpinningCursor2
+	,SpinningCursor3
+	,SpinningCursor4
+	,SpinningCursor5
+	,SpinningCursor6
+	,SpinningCursor7
+	,SpinningCursor8
+	,SpinningCursor9
 
 	,TOTAL_TEXT
 };
diff --git a/src/sbbs3/text_defaults.c b/src/sbbs3/text_defaults.c
index d426faa5e77d62ed85c0146e7ebb4f711b55bc69..beaef58a2f23a78f71f785c11bfdbb624a92c17a 100644
--- a/src/sbbs3/text_defaults.c
+++ b/src/sbbs3/text_defaults.c
@@ -1,5 +1,3 @@
-/* $Id: text_defaults.c,v 1.80 2020/08/04 04:26:03 rswindell Exp $ */
-
 /* Synchronet default text strings */
 
 /* Automatically generated by textgen $ */
@@ -1375,4 +1373,14 @@ const char * const text_defaults[TOTAL_TEXT]={
 	,"\x44\x6f\x65\x73\x20\x79\x6f\x75\x72\x20\x74\x65\x72\x6d\x69\x6e\x61\x6c\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x6d\x6f\x75\x73\x65"
 		"\x20\x72\x65\x70\x6f\x72\x74\x69\x6e\x67" // 831 MouseTerminalQ
 	,"\x28\x6d\x6f\x75\x73\x65\x29\x20" // 832 TerminalMouse
+	,"\x2d\x3e\x29\x7c\x28\x3c\x2d\x3c\x28\x7c\x29\x3e" // 833 SpinningCursor0
+	,"\xb3\x2f\xc4\x5c" // 834 SpinningCursor1
+	,"\xb0\xb1\xb2\xdb\xb2\xb1" // 835 SpinningCursor2
+	,"\x2d\x3d\xf0\x3d" // 836 SpinningCursor3
+	,"\xda\xc0\xd9\xbf" // 837 SpinningCursor4
+	,"\xdc\xde\xdf\xdd" // 838 SpinningCursor5
+	,"\x2d\x3e\x29\x7c\x28\x3c\x2d\x3c\x28\x7c\x29\x3e" // 839 SpinningCursor6
+	,"\xb3\x2f\xc4\x5c" // 840 SpinningCursor7
+	,"\xb0\xb1\xb2\xdb\xb2\xb1" // 841 SpinningCursor8
+	,"\x2d\x3d\xf0\x3d" // 842 SpinningCursor9
 };