diff --git a/src/sbbs3/str.cpp b/src/sbbs3/str.cpp
index 83da1240610852e6bd75ac31a43e0c455281248e..def48719a060ec7d4e58ea250d8f0642d801a456 100644
--- a/src/sbbs3/str.cpp
+++ b/src/sbbs3/str.cpp
@@ -435,6 +435,7 @@ uint sbbs_t::gettmplt(char *strout,char *templt, long mode)
 
 	sys_status&=~SS_ABORT;
 	sprintf(tmplt, "%.*s",sizeof(tmplt)-1, templt);
+	strupr(tmplt);
 	if(useron.misc&ANSI) {
 		if(mode&K_LINE) {
 			if(useron.misc&COLOR)
@@ -467,11 +468,12 @@ uint sbbs_t::gettmplt(char *strout,char *templt, long mode)
 			bputs(" \b");
 			continue; }
 		if(ch==24) {	/* Ctrl-X */
-			for(c--;c!=0xff;c--) {
+			for(;c;c--) {
 				outchar(BS);
-				if(tmplt[c]=='N' || tmplt[c]=='A' || tmplt[c]=='!')
-					bputs(" \b"); }
-			c=0; }
+				if(tmplt[c-1]=='N' || tmplt[c-1]=='A' || tmplt[c-1]=='!')
+					bputs(" \b"); 
+			}
+		}
 		else if(c<t) {
 			if(tmplt[c]=='N' && !isdigit(ch))
 				continue;