diff --git a/src/sbbs3/baja.c b/src/sbbs3/baja.c
index 664a3d7bb6befc41932a4eb5f52b8bb81b7618a7..226eccce7fd0990dfc38725ea494b5bfac26921a 100644
--- a/src/sbbs3/baja.c
+++ b/src/sbbs3/baja.c
@@ -309,11 +309,17 @@ void cvttab(char *str)
 			str[i]=' ';
 }
 
-void newvar(uchar *in)
+void newvar(uchar* src, uchar *in)
 {
 	uchar name[128];
 	long i,l;
 
+	if(isdigit(*in)) {
+		printf("!SYNTAX ERROR (illegal variable name):\n");
+		printf(linestr,src,line,(char*)in);
+		bail(1); 
+	}
+
 	sprintf(name,"%.80s",in);
 	if(strncmp(name,"var_",4)==0)	/* decompiled source? */
 		l=strtoul(name+4,NULL,16);
@@ -373,7 +379,7 @@ long isvar(uchar *arg)
 	uchar name[128],*p;
 	long i,l;
 
-	if(!arg || !(*arg))
+	if(!arg || !(*arg) || isdigit(*arg))
 		return(0);
 
 	sprintf(name,"%.80s",arg);
@@ -550,7 +556,7 @@ void compile(char *src)
 			for(p=arg;*p && *p!='#';) {
 				sp=strchr(p,' ');
 				if(sp) *sp=0;
-				newvar(p);
+				newvar(src,p);
 				if(!sp)
 					break;
 				p=sp+1;
@@ -855,7 +861,7 @@ void compile(char *src)
 				if(sp) *sp=0;
 				fputc(CS_VAR_INSTRUCTION,out);
 				fputc(DEFINE_STR_VAR,out);
-				newvar(p);
+				newvar(src,p);
 				writecrc(src,p);
 				if(!sp)
 					break;
@@ -870,7 +876,7 @@ void compile(char *src)
 				if(sp) *sp=0;
 				fputc(CS_VAR_INSTRUCTION,out);
 				fputc(DEFINE_INT_VAR,out);
-				newvar(p);
+				newvar(src,p);
 				writecrc(src,p);
 				if(!sp)
 					break;
@@ -885,7 +891,7 @@ void compile(char *src)
 				if(sp) *sp=0;
 				fputc(CS_VAR_INSTRUCTION,out);
 				fputc(DEFINE_GLOBAL_STR_VAR,out);
-				newvar(p);
+				newvar(src,p);
 				writecrc(src,p);
 				if(!sp)
 					break;
@@ -900,7 +906,7 @@ void compile(char *src)
 				if(sp) *sp=0;
 				fputc(CS_VAR_INSTRUCTION,out);
 				fputc(DEFINE_GLOBAL_INT_VAR,out);
-				newvar(p);
+				newvar(src,p);
 				writecrc(src,p);
 				if(!sp)
 					break;