diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 461297a894965494e47e62ac1cc92a4c7cba3ba3..edc59379c75685c40aaab698c8d717a6097de34c 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -1187,7 +1187,8 @@ void event_thread(void* arg)
 				sprintf(str,"%stime.dab",sbbs->cfg.ctrl_dir);
 				if((file=sbbs->nopen(str,O_WRONLY))==-1) {
 					sbbs->errormsg(WHERE,ERR_OPEN,str,O_WRONLY);
-					break; }
+					break; 
+				}
 				lseek(file,(long)sbbs->cfg.total_events*4L,SEEK_SET);
 				write(file,&lastprepack,sizeof(time_t));
 				close(file);
@@ -1229,28 +1230,32 @@ void event_thread(void* arg)
 
 			/* QWK Networking Call-out sempahores */
 			for(i=0;i<sbbs->cfg.total_qhubs;i++) {
-				if(sbbs->cfg.qhub[i]->node>=first_node 
-					&& sbbs->cfg.qhub[i]->node<=last_node) {
-					sprintf(str,"%sqnet/%s.now",sbbs->cfg.data_dir,sbbs->cfg.qhub[i]->id);
-					if(fexist(str)) {
-						strcpy(str,sbbs->cfg.qhub[i]->id);
-						eprintf("Semaphore signaled for QWK Network Hub: %s",strupr(str));
-						sbbs->cfg.qhub[i]->last=-1; 
-					}
+				if(sbbs->cfg.qhub[i]->node<first_node 
+					|| sbbs->cfg.qhub[i]->node>last_node)
+					continue;
+				if(sbbs->cfg.qhub[i]->last==-1) // already signaled
+					continue;
+				sprintf(str,"%sqnet/%s.now",sbbs->cfg.data_dir,sbbs->cfg.qhub[i]->id);
+				if(fexist(str)) {
+					strcpy(str,sbbs->cfg.qhub[i]->id);
+					eprintf("Semaphore signaled for QWK Network Hub: %s",strupr(str));
+					sbbs->cfg.qhub[i]->last=-1; 
 				}
 			}
 
 			/* Timed Event sempahores */
 			for(i=0;i<sbbs->cfg.total_events;i++) {
-				if((sbbs->cfg.event[i]->node>=first_node
-					&& sbbs->cfg.event[i]->node<=last_node)
-					|| sbbs->cfg.event[i]->misc&EVENT_EXCL) {
-					sprintf(str,"%s%s.now",sbbs->cfg.data_dir,sbbs->cfg.event[i]->code);
-					if(fexist(str)) {
-						strcpy(str,sbbs->cfg.event[i]->code);
-						eprintf("Semaphore signaled for Timed Event: %s",strupr(str));
-						sbbs->cfg.event[i]->last=-1; 
-					}
+				if((sbbs->cfg.event[i]->node<first_node
+					|| sbbs->cfg.event[i]->node>last_node)
+					&& !(sbbs->cfg.event[i]->misc&EVENT_EXCL))
+					continue;	// ignore non-exclusive events for other instances
+				if(sbbs->cfg.event[i]->last==-1) // already signaled
+					continue;
+				sprintf(str,"%s%s.now",sbbs->cfg.data_dir,sbbs->cfg.event[i]->code);
+				if(fexist(str)) {
+					strcpy(str,sbbs->cfg.event[i]->code);
+					eprintf("Semaphore signaled for Timed Event: %s",strupr(str));
+					sbbs->cfg.event[i]->last=-1; 
 				}
 			}
 		}
@@ -1318,8 +1323,11 @@ void event_thread(void* arg)
 							lseek(file
 								,sbbs->cfg.sub[sbbs->cfg.qhub[i]->sub[j]]->ptridx*sizeof(long)
 								,SEEK_SET);
-							write(file,&sbbs->subscan[sbbs->cfg.qhub[i]->sub[j]].ptr,sizeof(long)); }
-						close(file); } }
+							write(file,&sbbs->subscan[sbbs->cfg.qhub[i]->sub[j]].ptr,sizeof(long)); 
+						}
+						close(file); 
+					} 
+				}
 				sbbs->delfiles(sbbs->cfg.temp_dir,ALLFILES);
 
 				sbbs->cfg.qhub[i]->last=time(NULL);
@@ -1337,11 +1345,6 @@ void event_thread(void* arg)
 					if(sbbs->cfg.node_num<1) 
 						sbbs->cfg.node_num=1;
 					strcpy(sbbs->cfg.node_dir, sbbs->cfg.node_path[sbbs->cfg.node_num-1]);
-#if 0
-					sbbs->getnodedat(sbbs->cfg.qhub[i]->node,&node,1);
-					node.status=NODE_NETTING;
-					sbbs->putnodedat(sbbs->cfg.qhub[i]->node,&node);
-#endif
 					eprintf("QWK Network call-out: %s",sbbs->cfg.qhub[i]->id); 
 					sbbs->online=ON_LOCAL;
 					sbbs->external(
@@ -1380,11 +1383,6 @@ void event_thread(void* arg)
 					if(sbbs->cfg.node_num<1) 
 						sbbs->cfg.node_num=1;
 					strcpy(sbbs->cfg.node_dir, sbbs->cfg.node_path[sbbs->cfg.node_num-1]);
-#if 0
-					sbbs->getnodedat(sbbs->cfg.phub[i]->node,&node,1);
-					node.status=NODE_NETTING;
-					sbbs->putnodedat(sbbs->cfg.phub[i]->node,&node);
-#endif
 					eprintf("PostLink Network call-out: %s",sbbs->cfg.phub[i]->name); 
 					sbbs->online=ON_LOCAL;
 					sbbs->external(
@@ -1396,8 +1394,15 @@ void event_thread(void* arg)
 
 		/* Timed Events */
 		for(i=0;i<sbbs->cfg.total_events;i++) {
-			if(!sbbs->cfg.event[i]->node || sbbs->cfg.event[i]->node>sbbs->cfg.sys_nodes)
-				continue;
+			if(!sbbs->cfg.event[i]->node 
+				|| sbbs->cfg.event[i]->node>sbbs->cfg.sys_nodes)
+				continue;	// ignore events for invalid nodes
+
+			if((sbbs->cfg.event[i]->node<first_node
+				|| sbbs->cfg.event[i]->node>last_node)
+				&& !(sbbs->cfg.event[i]->misc&EVENT_EXCL))
+				continue;	// ignore non-exclusive events for other instances
+
 			tm=localtime(&sbbs->cfg.event[i]->last);
 			if(tm==NULL || sbbs->cfg.event[i]->last==-1 ||
 				(((sbbs->cfg.event[i]->freq 
@@ -1429,17 +1434,13 @@ void event_thread(void* arg)
 								sbbs->putnodedat(j,&node);
 							}
 
-#if 0
-							getnodedat(node_num,&thisnode,0);
-							if(thisnode.misc&NODE_DOWN)
-								return(0);
-#endif
 							lastnodechk=now;
 							sprintf(str,"%stime.dab",sbbs->cfg.ctrl_dir);
 							if((file=sbbs->nopen(str,O_RDONLY))==-1) {
 								sbbs->errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
 								sbbs->cfg.event[i]->last=now;
-								continue; }
+								continue; 
+							}
 							lseek(file,(long)i*4L,SEEK_SET);
 							read(file,&sbbs->cfg.event[i]->last,sizeof(time_t));
 							close(file);
@@ -1464,11 +1465,6 @@ void event_thread(void* arg)
 							if(now-lastnodechk<10)
 								continue;
 							lastnodechk=now;
-#if 0
-							getnodedat(node_num,&thisnode,0);
-							if(thisnode.misc&NODE_DOWN)
-								return(0);
-#endif
 							// Check/change the status of the nodes that we're in control of
 							for(j=first_node;j<=last_node;j++) {
 								if(sbbs->getnodedat(j,&node,1)!=0)
@@ -1505,11 +1501,13 @@ void event_thread(void* arg)
 						} 
 					} 
 				}
+#if 0 // removed Jun-23-2002
 				else {	/* non-exclusive */
 					sbbs->getnodedat(sbbs->cfg.event[i]->node,&node,0);
 					if(node.status!=NODE_WFC)
 						continue;
 				}
+#endif
 				if(sbbs->cfg.event[i]->node<first_node 
 					|| sbbs->cfg.event[i]->node>last_node) {
 					eprintf("Changing node status for nodes %d through %d to WFC"
@@ -1552,7 +1550,8 @@ void event_thread(void* arg)
 					sprintf(str,"%stime.dab",sbbs->cfg.ctrl_dir);
 					if((file=sbbs->nopen(str,O_WRONLY))==-1) {
 						sbbs->errormsg(WHERE,ERR_OPEN,str,O_WRONLY);
-						break; }
+						break; 
+					}
 					lseek(file,(long)i*4L,SEEK_SET);
 					write(file,&sbbs->cfg.event[i]->last,sizeof(time_t));
 					close(file);
@@ -1817,7 +1816,8 @@ bool sbbs_t::init()
 		if((logfile_fp=fopen(str,"a+b"))==NULL) {
 			errormsg(WHERE, ERR_OPEN, str, 0);
 			lprintf("Perhaps this node is already running");
-			return(false); }
+			return(false); 
+		}
 
 		if(filelength(fileno(logfile_fp))) {
 			log(crlf);
@@ -2162,7 +2162,8 @@ int sbbs_t::nopen(char *str, int access)
 
     if(access&O_DENYNONE) {
         share=SH_DENYNO;
-        access&=~O_DENYNONE; }
+        access&=~O_DENYNONE; 
+	}
     else if(access==O_RDONLY) share=SH_DENYWR;
     else share=SH_DENYRW;
 	if(!(access&O_TEXT))
@@ -2173,7 +2174,8 @@ int sbbs_t::nopen(char *str, int access)
     if(count>(LOOP_NOPEN/2) && count<=LOOP_NOPEN) {
         sprintf(logstr,"NOPEN COLLISION - File: \"%s\" Count: %d"
             ,str,count);
-        logline("!!",logstr); }
+        logline("!!",logstr); 
+	}
     if(file==-1 && (errno==EACCES || errno==EAGAIN)) {
         sprintf(logstr,"NOPEN ACCESS DENIED - File: \"%s\" errno: %d"
 			,str,errno);
@@ -2228,50 +2230,60 @@ int sbbs_t::mv(char *src, char *dest, char copy)
     if(!fexist(src)) {
         bprintf("\r\n\7MV ERROR: Source doesn't exist\r\n'%s'\r\n"
             ,src);
-        return(-1); }
+        return(-1); 
+	}
     if(!copy && fexist(dest)) {
         bprintf("\r\n\7MV ERROR: Destination already exists\r\n'%s'\r\n"
             ,dest);
-        return(-1); }
+        return(-1); 
+	}
 #ifndef __unix__	/* need to determine if on same mount device */
     if(!copy && ((src[1]!=':' && dest[1]!=':')
         || (src[1]==':' && dest[1]==':' && toupper(src[0])==toupper(dest[0])))) {
         if(rename(src,dest)) {						/* same drive, so move */
             bprintf("\r\nMV ERROR: Error renaming '%s'"
                     "\r\n                      to '%s'\r\n\7",src,dest);
-            return(-1); }
-        return(0); }
+            return(-1); 
+		}
+        return(0); 
+	}
 #endif
     attr(WHITE);
     if((ind=nopen(src,O_RDONLY))==-1) {
         errormsg(WHERE,ERR_OPEN,src,O_RDONLY);
-        return(-1); }
+        return(-1); 
+	}
     if((inp=fdopen(ind,"rb"))==NULL) {
         close(ind);
         errormsg(WHERE,ERR_FDOPEN,str,O_RDONLY);
-        return(-1); }
+        return(-1); 
+	}
     setvbuf(inp,NULL,_IOFBF,32*1024);
     if((outd=nopen(dest,O_WRONLY|O_CREAT|O_TRUNC))==-1) {
         fclose(inp);
         errormsg(WHERE,ERR_OPEN,dest,O_WRONLY|O_CREAT|O_TRUNC);
-        return(-1); }
+        return(-1); 
+	}
     if((outp=fdopen(outd,"wb"))==NULL) {
         close(outd);
         fclose(inp);
         errormsg(WHERE,ERR_FDOPEN,dest,O_WRONLY|O_CREAT|O_TRUNC);
-        return(-1); }
+        return(-1); 
+	}
     setvbuf(outp,NULL,_IOFBF,8*1024);
     length=filelength(ind);
     if(!length) {
         fclose(inp);
         fclose(outp);
         errormsg(WHERE,ERR_LEN,src,0);
-        return(-1); }
+        return(-1); 
+	}
     if((buf=(char *)MALLOC(MV_BUFLEN))==NULL) {
         fclose(inp);
         fclose(outp);
         errormsg(WHERE,ERR_ALLOC,nulstr,MV_BUFLEN);
-        return(-1); }
+        return(-1); 
+	}
     l=0L;
     while(l<length) {
         bprintf("%2lu%%",l ? (long)(100.0/((float)length/l)) : 0L);
@@ -2282,15 +2294,18 @@ int sbbs_t::mv(char *src, char *dest, char copy)
             fclose(inp);
             fclose(outp);
             errormsg(WHERE,ERR_READ,src,chunk);
-            return(-1); }
+            return(-1); 
+		}
         if(fwrite(buf,1,chunk,outp)!=chunk) {
             FREE(buf);
             fclose(inp);
             fclose(outp);
             errormsg(WHERE,ERR_WRITE,dest,chunk);
-            return(-1); }
+            return(-1); 
+		}
         l+=chunk;
-        bputs("\b\b\b"); }
+        bputs("\b\b\b"); 
+	}
     bputs("   \b\b\b");  /* erase it */
     attr(atr);
     /* getftime(ind,&ftime);
@@ -2300,7 +2315,8 @@ int sbbs_t::mv(char *src, char *dest, char copy)
     fclose(outp);
     if(!copy && remove(src)) {
         errormsg(WHERE,ERR_REMOVE,src,0);
-        return(-1); }
+        return(-1); 
+	}
     return(0);
 }
 
@@ -2535,7 +2551,8 @@ void sbbs_t::catsyslog(int crash)
 	if(length) {
 		if((buf=(char HUGE16 *)LMALLOC(length))==NULL) {
 			errormsg(WHERE,ERR_ALLOC,str,length);
-			return; }
+			return; 
+		}
 		rewind(logfile_fp);
 		if(fread(buf,1,length,logfile_fp)!=(size_t)length) {
 			errormsg(WHERE,ERR_READ,"log file",length);
@@ -2551,12 +2568,14 @@ void sbbs_t::catsyslog(int crash)
 		if((file=nopen(str,O_WRONLY|O_APPEND|O_CREAT))==-1) {
 			errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_APPEND|O_CREAT);
 			FREE((char *)buf);
-			return; }
+			return; 
+		}
 		if(lwrite(file,buf,length)!=length) {
 			close(file);
 			errormsg(WHERE,ERR_WRITE,str,length);
 			FREE((char *)buf);
-			return; }
+			return; 
+		}
 		close(file);
 		if(crash) {
 			for(i=0;i<2;i++) {
@@ -2564,14 +2583,19 @@ void sbbs_t::catsyslog(int crash)
 				if((file=nopen(str,O_WRONLY|O_APPEND|O_CREAT))==-1) {
 					errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_APPEND|O_CREAT);
 					FREE((char *)buf);
-					return; }
+					return; 
+				}
 				if(lwrite(file,buf,length)!=length) {
 					close(file);
 					errormsg(WHERE,ERR_WRITE,str,length);
 					FREE((char *)buf);
-					return; }
-				close(file); } }
-		FREE((char *)buf); }
+					return; 
+				}
+				close(file); 
+			} 
+		}
+		FREE((char *)buf); 
+	}
 
 	fclose(logfile_fp);
 
@@ -2594,7 +2618,8 @@ void sbbs_t::logoffstats()
 		sprintf(str,"%sdsts.dab",i ? cfg.ctrl_dir : cfg.node_dir);
 		if((file=nopen(str,O_RDWR))==-1) {
 			errormsg(WHERE,ERR_OPEN,str,O_RDWR);
-			return; }
+			return; 
+		}
 		lseek(file,12L,SEEK_SET);   /* Skip timestamp, logons and logons today */
 		read(file,&stats.timeon,4);   /* Total time on system  */
 		read(file,&stats.ttoday,4); /* Time today on system  */
@@ -2687,7 +2712,8 @@ void node_thread(void* arg)
 				if((file=sbbs->nopen(str,O_RDONLY))==-1) {
 					sbbs->errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
 					sbbs->hangup();
-					break; }
+					break; 
+				}
 				FREE_AND_NULL(sbbs->main_csi.cs);
 				sbbs->freevars(&sbbs->main_csi);
 				sbbs->clearvars(&sbbs->main_csi);
@@ -2697,7 +2723,8 @@ void node_thread(void* arg)
 					close(file);
 					sbbs->errormsg(WHERE,ERR_ALLOC,str,sbbs->main_csi.length);
 					sbbs->hangup();
-					break; }
+					break; 
+				}
 
 				if(lread(file,sbbs->main_csi.cs,sbbs->main_csi.length)
 					!=(int)sbbs->main_csi.length) {
@@ -2706,7 +2733,8 @@ void node_thread(void* arg)
 					FREE(sbbs->main_csi.cs);
 					sbbs->main_csi.cs=NULL;
 					sbbs->hangup();
-					break; }
+					break; 
+				}
 				close(file);
 
 				curshell=sbbs->useron.shell;
@@ -2757,7 +2785,8 @@ void node_thread(void* arg)
 			if(user.misc&DELETED) {
 				if(strcmp(uname,"DELETED USER"))
 					putusername(&sbbs->cfg,i,nulstr);
-				continue; }
+				continue; 
+			}
 
 			if(strcmp(user.alias,uname))
 				putusername(&sbbs->cfg,i,user.alias);
@@ -2780,7 +2809,8 @@ void node_thread(void* arg)
 							+(sbbs->cfg.val_expire[sbbs->cfg.level_expireto[user.level]]*24*60*60);
 					else
 						user.expire=0;
-					user.level=sbbs->cfg.val_level[sbbs->cfg.level_expireto[user.level]]; }
+					user.level=sbbs->cfg.val_level[sbbs->cfg.level_expireto[user.level]]; 
+				}
 				else {
 					if(sbbs->cfg.level_misc[user.level]&LEVEL_EXPTOLVL)
 						user.level=sbbs->cfg.level_expireto[user.level];
@@ -2792,7 +2822,8 @@ void node_thread(void* arg)
 					user.flags4&=~sbbs->cfg.expired_flags4; /* expired status */
 					user.exempt&=~sbbs->cfg.expired_exempt;
 					user.rest|=sbbs->cfg.expired_rest;
-					user.expire=0; }
+					user.expire=0; 
+				}
 				putuserrec(&sbbs->cfg,i,U_LEVEL,2,ultoa(user.level,str,10));
 				putuserrec(&sbbs->cfg,i,U_FLAGS1,8,ultoa(user.flags1,str,16));
 				putuserrec(&sbbs->cfg,i,U_FLAGS2,8,ultoa(user.flags2,str,16));
@@ -2805,8 +2836,9 @@ void node_thread(void* arg)
 					sbbs->useron=user;
 					sbbs->online=ON_LOCAL;
 					sbbs->exec_bin(sbbs->cfg.expire_mod,&sbbs->main_csi);
-					sbbs->online=0; }
+					sbbs->online=0; 
 				}
+			}
 
 			/***********************************************************/
 			/* Auto deletion based on expiration date or days inactive */
@@ -2819,7 +2851,8 @@ void node_thread(void* arg)
 				sbbs->logentry("!*",str);
 				sbbs->delallmail(i);
 				putusername(&sbbs->cfg,i,nulstr);
-				putuserrec(&sbbs->cfg,i,U_MISC,8,ultoa(user.misc|DELETED,str,16)); }
+				putuserrec(&sbbs->cfg,i,U_MISC,8,ultoa(user.misc|DELETED,str,16)); 
+			}
 		}
 
 		lprintf("Node %d Purging deleted/expired e-mail",sbbs->cfg.node_num);
@@ -3212,7 +3245,8 @@ void DLLCALL bbs_thread(void* arg)
 			if((file=sopen(str,O_WRONLY|O_CREAT|O_APPEND, SH_DENYNO))==-1) {
 				lprintf("!ERROR %d creating %s",errno, str);
 				cleanup(1);
-				return; }
+				return; 
+			}
 			while(filelength(file)<DSTSDABLEN)
 				if(write(file,"\0",1)!=1)
 					break;				/* Create NULL system dsts.dab */