diff --git a/src/sbbs3/asc2ans.c b/src/sbbs3/asc2ans.c
index c0c3b55da4c2fbe414fad44e2c0411f544cf31eb..07ddc10a0a4a6890c103cd35d5db1255d9f39480 100644
--- a/src/sbbs3/asc2ans.c
+++ b/src/sbbs3/asc2ans.c
@@ -91,7 +91,7 @@ int main(int argc, char **argv)
 	while((ch=fgetc(in))!=EOF) {
 		if(ch==CTRL_A) { /* ctrl-a */
 			ch=fgetc(in);
-			if(ch==EOF || toupper(ch)=='Z')	/* EOF */
+			if(ch==EOF)	/* EOF */
 				break;
 			if(ch>0x7f) {					/* move cursor right x columns */
 				int cnt=ch-0x7f;
diff --git a/src/sbbs3/con_out.cpp b/src/sbbs3/con_out.cpp
index c815fee7aded5af280a1e4f74f93ca92f0bed136..cc808cdbe626c55430dd4542f8278c7813e4c3d8 100644
--- a/src/sbbs3/con_out.cpp
+++ b/src/sbbs3/con_out.cpp
@@ -57,8 +57,6 @@ int sbbs_t::bputs(const char *str)
 	while(str[l] && online) {
 		if(str[l]==CTRL_A && str[l+1]!=0) {
 			l++;
-			if(toupper(str[l])=='Z')	/* EOF */
-				break;
 			ctrl_a(str[l++]);
 			continue;
 		}
diff --git a/src/sbbs3/fido.cpp b/src/sbbs3/fido.cpp
index 9ceb9aee7084cd4296834561506568c52bbf6e90..566432d6b1870e7666eaf3b3f280ce376c39293e 100644
--- a/src/sbbs3/fido.cpp
+++ b/src/sbbs3/fido.cpp
@@ -861,7 +861,7 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub)
 	while(l<length) {
 		if(qwkbuf[l]==CTRL_A) {   /* Ctrl-A, so skip it and the next char */
 			l++;
-			if(l>=length || toupper(qwkbuf[l])=='Z')	/* EOF */
+			if(l>=length)
 				break;
 			if((ch=ctrl_a_to_ascii_char(qwkbuf[l])) != 0)
 				write(fido,&ch,1);
diff --git a/src/sbbs3/getkey.cpp b/src/sbbs3/getkey.cpp
index e144aa07a6aca4516b2edff6a8957397cfd74ecf..7f6b7fd601f32fe257e2a59d7077edc0247d2607 100644
--- a/src/sbbs3/getkey.cpp
+++ b/src/sbbs3/getkey.cpp
@@ -336,8 +336,6 @@ void sbbs_t::mnemonics(const char *str)
 		else {
 			if(str[l]==CTRL_A && str[l+1]!=0) {
 				l++;
-				if(toupper(str[l])=='Z')	/* EOF */
-					break;
 				ctrl_a(str[l++]);
 			} else {
 				if(str[l] == '@') {
diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c
index ca1d808066c8d2c2f6ea0ee89581e3cdbcdefb87..9ceec11403bfff9480e0229926137b0e343b5b60 100644
--- a/src/sbbs3/js_global.c
+++ b/src/sbbs3/js_global.c
@@ -2188,7 +2188,7 @@ js_html_encode(JSContext *cx, uintN argc, jsval *arglist)
 						hpos=0;
 						break;
 					case 'Z':
-						outbuf[j++]=0;
+						outbuf[j++]=CTRL_Z;
 						break;
 					case 'A':
 					default:
diff --git a/src/sbbs3/msgtoqwk.cpp b/src/sbbs3/msgtoqwk.cpp
index 16c226dafbf7ef00238eae5320efd8707a9cb1ba..ace74ed0a4f68f2499dd12d0b04902079d83a569 100644
--- a/src/sbbs3/msgtoqwk.cpp
+++ b/src/sbbs3/msgtoqwk.cpp
@@ -379,7 +379,7 @@ ulong sbbs_t::msgtoqwk(smbmsg_t* msg, FILE *qwk_fp, long mode, uint subnum
 
 			if(ch==CTRL_A) {
 				ch=buf[++l];
-				if(ch==0 || toupper(ch)=='Z')		/* EOF */
+				if(ch==0)
 					break;
 				if((asc=ctrl_a_to_ascii_char(ch)) != 0) {
 					fputc(asc,qwk_fp);
diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c
index 16c2372384531fc25dff5747dfd78187166739b6..8233a5be1c0ab3918b4af3c982df4610eded39aa 100644
--- a/src/sbbs3/sbbsecho.c
+++ b/src/sbbs3/sbbsecho.c
@@ -4831,7 +4831,7 @@ void export_echomail(const char* sub_code, const nodecfg_t* nodecfg, bool rescan
 				if(buf[l]==CTRL_A) { /* Ctrl-A, so skip it and the next char */
 					char ch;
 					l++;
-					if(buf[l]==0 || toupper(buf[l])=='Z')	/* EOF */
+					if(buf[l]==0)
 						break;
 					if((ch=ctrl_a_to_ascii_char(buf[l])) != 0)
 						fmsgbuf[f++]=ch;
diff --git a/src/sbbs3/str_util.c b/src/sbbs3/str_util.c
index 7a2dd911238891722ea538f1e9058167df5ae1f1..733c766337bc632e8ac7d865c7bf73eb31a5c1b6 100644
--- a/src/sbbs3/str_util.c
+++ b/src/sbbs3/str_util.c
@@ -52,8 +52,6 @@ char* DLLCALL remove_ctrl_a(const char *str, char *dest)
 	for(i=j=0;str[i];i++) {
 		if(str[i]==CTRL_A) {
 			i++;
-			if(str[i]==0 || toupper(str[i])=='Z')	/* EOF */
-				break;
 			/* convert non-destructive backspace to a destructive backspace */
 			if(str[i]=='<' && j)	
 				j--;
@@ -73,8 +71,6 @@ char* DLLCALL strip_ctrl(const char *str, char* dest)
 	for(i=j=0;str[i];i++) {
 		if(str[i]==CTRL_A) {
 			i++;
-			if(str[i]==0 || toupper(str[i])=='Z')	/* EOF */
-				break;
 			/* convert non-destructive backspace to a destructive backspace */
 			if(str[i]=='<' && j)	
 				j--;
@@ -121,8 +117,6 @@ char* DLLCALL prep_file_desc(const char *str, char* dest)
 	for(i=j=0;str[i];i++)
 		if(str[i]==CTRL_A && str[i+1]!=0) {
 			i++;
-			if(toupper(str[i])=='Z')	/* EOF */
-				break;
 			/* convert non-destructive backspace to a destructive backspace */
 			if(str[i]=='<' && j)	
 				j--;
@@ -346,8 +340,6 @@ size_t bstrlen(const char *str)
 	while(*str) {
 		if(*str==CTRL_A) {
 			str++;
-			if(toupper(*str)=='Z')	/* EOF */
-				break;
 			if(*str=='[')
 				i=0;
 			else if(*str=='<' && i)