diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c
index 99060f144a466905895406c183dbeebb25bb8171..0d9af957af1389b46a1e24e2adc39a78b5fa0e5c 100644
--- a/src/sbbs3/sbbsecho.c
+++ b/src/sbbs3/sbbsecho.c
@@ -1071,7 +1071,7 @@ void command(char *instr,faddr_t addr)
 	area_t add_area,del_area;
 
 	node=matchnode(addr,0);
-	if(node==cfg.nodecfgs)
+	if(node>=cfg.nodecfgs)
 		return;
 	memset(&add_area,0,sizeof(area_t));
 	memset(&del_area,0,sizeof(area_t));
@@ -1143,7 +1143,7 @@ void command(char *instr,faddr_t addr)
 		p=temp;
 		while(*p && *p>SP) p++;
 		*p=0;
-		if(node==cfg.nodecfgs)		   /* Should never happen */
+		if(node>=cfg.nodecfgs)		   /* Should never happen */
 			return;
 		if(!stricmp(temp,cfg.nodecfg[node].password)) {
 			sprintf(str,"Your password was already set to %s."
@@ -1262,7 +1262,7 @@ char *process_areafix(faddr_t addr,char HUGE16 *inbuf,char *password)
 		addr=atofaddr(str); }
 
 	i=matchnode(addr,0);
-	if(i==cfg.nodecfgs) {
+	if(i>=cfg.nodecfgs) {
 		sprintf(body,"Your node is not configured for Areafix, please "
 			"contact your hub.\r\n");
 		create_netmail(0,"Areafix Request",body,addr,0);
@@ -3112,7 +3112,7 @@ for(j=0;j<area.uplinks;j++) {
 				bail(1); }
 			pkthdr.orignode=sysaddr.node;
 			fmsghdr.destnode=pkthdr.destnode=area.uplink[j].node;
-			if(cfg.nodecfg[node].pkt_type==PKT_TWO_TWO) {
+			if(node<cfg.nodecfgs && cfg.nodecfg[node].pkt_type==PKT_TWO_TWO) {
 				pkthdr.year=sysaddr.point;
 				pkthdr.month=area.uplink[j].point;
 				pkthdr.day=0;
@@ -3141,26 +3141,27 @@ for(j=0;j<area.uplinks;j++) {
 			fmsghdr.destzone=pkthdr.destzone=area.uplink[j].zone;
 			memset(pkthdr.empty,0,sizeof(two_two_t));
 
-			if(cfg.nodecfg[node].pkt_type==PKT_TWO_TWO) {
-				memset(&two,0,20);
-				strcpy(two.origdomn,"fidonet");
-				strcpy(two.destdomn,"fidonet");
-				memcpy(&pkthdr.empty,&two,20); }
-			else if(cfg.nodecfg[node].pkt_type==PKT_TWO_PLUS) {
-				memset(&two_p,0,20);
-				if(sysaddr.point) {
-					pkthdr.orignet=-1;
-					two_p.auxnet=sysaddr.net; }
-				two_p.cwcopy=0x0100;
-				two_p.prodcode=pkthdr.prodcode;
-				two_p.revision=pkthdr.sernum;
-				two_p.cword=0x0001;
-				two_p.origzone=pkthdr.origzone;
-				two_p.destzone=pkthdr.destzone;
-				two_p.origpoint=sysaddr.point;
-				two_p.destpoint=area.uplink[j].point;
-				memcpy(&pkthdr.empty,&two_p,sizeof(two_plus_t)); }
-
+			if(node<cfg.nodecfgs) {
+				if(cfg.nodecfg[node].pkt_type==PKT_TWO_TWO) {
+					memset(&two,0,20);
+					strcpy(two.origdomn,"fidonet");
+					strcpy(two.destdomn,"fidonet");
+					memcpy(&pkthdr.empty,&two,20); }
+				else if(cfg.nodecfg[node].pkt_type==PKT_TWO_PLUS) {
+					memset(&two_p,0,20);
+					if(sysaddr.point) {
+						pkthdr.orignet=-1;
+						two_p.auxnet=sysaddr.net; }
+					two_p.cwcopy=0x0100;
+					two_p.prodcode=pkthdr.prodcode;
+					two_p.revision=pkthdr.sernum;
+					two_p.cword=0x0001;
+					two_p.origzone=pkthdr.origzone;
+					two_p.destzone=pkthdr.destzone;
+					two_p.origpoint=sysaddr.point;
+					two_p.destpoint=area.uplink[j].point;
+					memcpy(&pkthdr.empty,&two_p,sizeof(two_plus_t)); }
+			}
 			fwrite(&pkthdr,sizeof(pkthdr_t),1,outpkt[totalpkts].stream);
 			putfmsg(outpkt[totalpkts].stream,fbuf,fmsghdr,area,seenbys,paths);
 			outpkt[totalpkts].curopen=1;