diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c
index a01f26ca9643a239035f3cea784f675a30a8adfc..9c20195f15de7c3a133aa8a52eebd1b8d5367ddc 100644
--- a/src/sbbs3/sbbsecho.c
+++ b/src/sbbs3/sbbsecho.c
@@ -86,26 +86,6 @@ char		compiler[32];
 
 BOOL pause_on_exit=FALSE;
 
-#ifdef __WATCOMC__
-/******************************************************************************
- A DOS to Unix function - because WATCOM doesn't have one
-******************************************************************************/
-time_t dostounix(struct date *d,struct time *t)
-{
-	struct tm tm;
-
-	tm.tm_sec=t->ti_sec;
-	tm.tm_min=t->ti_min;
-	tm.tm_hour=t->ti_hour;
-	tm.tm_mday=d->da_day;
-	tm.tm_mon=(d->da_mon-1);
-	tm.tm_year=d->da_year-1900;
-	tm.tm_isdst=0;
-
-	return(mktime(&tm));
-}
-#endif
-
 #ifndef __NT__
 #define delfile(x) remove(x)
 #else
@@ -4021,7 +4001,7 @@ int main(int argc, char **argv)
 			,password[16];
 	uchar	*fmsgbuf=NULL;
 	ushort	attr;
-	int 	i,j,k,file,fmsg, grp;
+	int 	i,j,k,file,fmsg,grp,node;
 	BOOL	grunged;
 	uint	subnum[MAX_OPEN_SMBS]={INVALID_SUB};
 	ulong	echomail=0,l,m/* f, */,areatag;
@@ -5014,18 +4994,19 @@ int main(int argc, char **argv)
 				bail(1); }
 			fclose(fidomsg);
 
+			attr=0;
+			node=matchnode(addr,0);
+			if(node<cfg.nodecfgs && cfg.nodecfg[node].route.zone
+				&& !(hdr.attr&(FIDO_CRASH|FIDO_HOLD))) {
+				addr=cfg.nodecfg[node].route;		/* Routed */
+				if(cfg.log&LOG_ROUTING)
+					logprintf("Routing %s to %s",path,faddrtoa(&addr,NULL));
+				node=matchnode(addr,0); 
+			}
+			if(node<cfg.nodecfgs)
+				attr=cfg.nodecfg[node].attr;
+
 			if(misc&FLO_MAILER) {
-				attr=0;
-				i=matchnode(addr,0);
-				if(i<cfg.nodecfgs)
-					if(cfg.nodecfg[i].route.zone
-						&& !(hdr.attr&(FIDO_CRASH|FIDO_HOLD))) {
-						addr=cfg.nodecfg[i].route;		/* Routed */
-						if(cfg.log&LOG_ROUTING)
-							logprintf("Routing %s to %s",path,faddrtoa(&addr,NULL));
-						i=matchnode(addr,0); }
-				if(i<cfg.nodecfgs)
-					attr=cfg.nodecfg[i].attr;
 				if(hdr.attr&FIDO_CRASH)
 					attr|=ATTR_CRASH;
 				else if(hdr.attr&FIDO_HOLD)
@@ -5068,12 +5049,13 @@ int main(int argc, char **argv)
 					,packet);
 				logprintf("ERROR line %d opening %s %s",__LINE__,packet
 					,strerror(errno));
-				bail(1); }
+				bail(1); 
+			}
 
 			if(!filelength(file)) {
 				memset(&pkthdr,0,sizeof(pkthdr));
 				pkthdr.orignode=hdr.orignode;
-				pkthdr.destnode=hdr.destnode;
+				pkthdr.destnode=addr.node;
 				pkthdr.year=tm->tm_year+1900;
 				pkthdr.month=tm->tm_mon;
 				pkthdr.day=tm->tm_mday;
@@ -5083,14 +5065,13 @@ int main(int argc, char **argv)
 				pkthdr.baud=0x00;
 				pkthdr.pkttype=0x0002;
 				pkthdr.orignet=hdr.orignet;
-				pkthdr.destnet=hdr.destnet;
+				pkthdr.destnet=addr.net;
 				pkthdr.prodcode=0x00;
 				pkthdr.sernum=0;
 				pkthdr.origzone=hdr.origzone;
-				pkthdr.destzone=hdr.destzone;
-				i=matchnode(addr,0);
-				if(i<cfg.nodecfgs) {
-					if(cfg.nodecfg[i].pkt_type==PKT_TWO_PLUS) {
+				pkthdr.destzone=addr.zone;
+				if(node<cfg.nodecfgs) {
+					if(cfg.nodecfg[node].pkt_type==PKT_TWO_PLUS) {
 						memset(&two_plus,0,sizeof(two_plus));
 						if(hdr.origpoint) {
 							pkthdr.orignet=-1;
@@ -5103,10 +5084,10 @@ int main(int argc, char **argv)
 						two_plus.origzone=pkthdr.origzone;
 						two_plus.destzone=pkthdr.destzone;
 						two_plus.origpoint=hdr.origpoint;
-						two_plus.destpoint=hdr.destpoint;
+						two_plus.destpoint=addr.point;
 						memcpy(&pkthdr.empty,&two_plus,sizeof(pkthdr.empty)); 
 					}
-					memcpy(pkthdr.password,cfg.nodecfg[i].pktpwd,sizeof(pkthdr.password));
+					memcpy(pkthdr.password,cfg.nodecfg[node].pktpwd,sizeof(pkthdr.password));
 				}
 				fwrite(&pkthdr,sizeof(pkthdr_t),1,stream); 
 			}