diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index cccdc2ae26310569dc7f735da93e349934e953e7..9cc391a35530ae3a58d1e2757b8ef1d5b24f7cfc 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -910,6 +910,7 @@ void event_thread(void* arg)
 	bool		check_semaphores;
 	ulong		l;
 	time_t		now;
+	time_t		start;
 	time_t		lastsemchk=0;
 	time_t		lastnodechk=0;
 	time_t		lastprepack=0;
@@ -1132,14 +1133,12 @@ void event_thread(void* arg)
 						sbbs->cfg.node_num=i;
 						strcpy(sbbs->cfg.node_dir, sbbs->cfg.node_path[i-1]);
 
-						eprintf("Running node %u daily event",i);
-						// status("Running node daily event");
+						eprintf("Running node %d daily event",i);
 						sbbs->online=ON_LOCAL;
 						sbbs->logentry("!:","Run node daily event");
 						sbbs->external(
 							 sbbs->cmdstr(sbbs->cfg.node_daily,nulstr,nulstr,NULL)
 							,EX_OFFLINE);
-						// status(STATUS_WFC);
 					}
 					sbbs->getnodedat(i,&node,1);
 					node.misc&=~NODE_EVENT;
@@ -1247,7 +1246,6 @@ void event_thread(void* arg)
 				if(sbbs->cfg.qhub[i]->call[0]) {
 					sbbs->cfg.node_num=sbbs->cfg.qhub[i]->node;
 					strcpy(sbbs->cfg.node_dir, sbbs->cfg.node_path[sbbs->cfg.node_num-1]);
-					// status("QWK Networking");
 #if 0
 					sbbs->getnodedat(sbbs->cfg.qhub[i]->node,&node,1);
 					node.status=NODE_NETTING;
@@ -1258,7 +1256,6 @@ void event_thread(void* arg)
 					sbbs->external(
 						 sbbs->cmdstr(sbbs->cfg.qhub[i]->call,nulstr,nulstr,NULL)
 						,EX_OFFLINE|EX_BG);
-					// status(STATUS_WFC);
 				}
 			} 
 		}
@@ -1291,7 +1288,6 @@ void event_thread(void* arg)
 				if(sbbs->cfg.phub[i]->call[0]) {
 					sbbs->cfg.node_num=sbbs->cfg.phub[i]->node;
 					strcpy(sbbs->cfg.node_dir, sbbs->cfg.node_path[sbbs->cfg.node_num-1]);
-					// status("PostLink Networking");
 #if 0
 					sbbs->getnodedat(sbbs->cfg.phub[i]->node,&node,1);
 					node.status=NODE_NETTING;
@@ -1302,7 +1298,6 @@ void event_thread(void* arg)
 					sbbs->external(
 						 sbbs->cmdstr(sbbs->cfg.phub[i]->call,nulstr,nulstr,NULL)
 						,EX_OFFLINE|EX_BG);
-					// status(STATUS_WFC);
 				} 
 			}
 		}
@@ -1321,10 +1316,10 @@ void event_thread(void* arg)
 
 					if(sbbs->cfg.event[i]->node<first_node
 						|| sbbs->cfg.event[i]->node>last_node) {
-						sprintf(str,"Waiting for node %d to run timed event."
-							,sbbs->cfg.event[i]->node);
-						// status(str);
+						eprintf("Waiting for node %d to run timed event: %s"
+							,sbbs->cfg.event[i]->node,sbbs->cfg.event[i]->code);
 						lastnodechk=0;	 /* really last event time check */
+						start=time(NULL);
 						while(!sbbs->terminated) {
 							mswait(1000);
 							now=time(NULL);
@@ -1353,14 +1348,20 @@ void event_thread(void* arg)
 							read(file,&sbbs->cfg.event[i]->last,sizeof(time_t));
 							close(file);
 							if(now-sbbs->cfg.event[i]->last<(60*60))	/* event is done */
-								break; }
+								break; 
+							if(now-start>(60*60)) {
+								eprintf("!TIMEOUT waiting for event to complete");
+								break;
+							}
+						}
 						sprintf(str,"%s%s.now",sbbs->cfg.data_dir,sbbs->cfg.event[i]->code);
 						remove(str);
 						sbbs->cfg.event[i]->last=now;
 					} else {	// Exclusive event to run on a node under our control
 						eprintf("Waiting for all nodes to become inactive before "
-							"running timed event.");
+							"running timed event: %s",sbbs->cfg.event[i]->code);
 						lastnodechk=0;
+						start=time(NULL);
 						while(!sbbs->terminated) {
 							mswait(1000);
 							now=time(NULL);
@@ -1398,9 +1399,11 @@ void event_thread(void* arg)
 							}
 							if(j>sbbs->cfg.sys_nodes) /* all nodes either offline or in limbo */
 								break;
-							sprintf(str,"Waiting for node %d (status=%d)"
-								,j,node.status);
-							// status(str);
+							eprintf("Waiting for node %d (status=%d)",j,node.status);
+							if(now-start>(60*60)) {
+								eprintf("!TIMEOUT waiting for node %d to become inactive",j);
+								break;
+							}
 						} 
 					} 
 				}
@@ -1457,7 +1460,6 @@ void event_thread(void* arg)
 						}
 					}
 				} 
-				// status(STATUS_WFC);
 			} 
 		}
 		pthread_mutex_unlock(&event_mutex);
@@ -2648,7 +2650,6 @@ void node_thread(void* arg)
 		node.status=NODE_EVENT_RUNNING;
 		sbbs->putnodedat(sbbs->cfg.node_num,&node);
 
-//		status("Running system daily maintenance");
 		sbbs->logentry("!:","Ran system daily maintenance");
 		lprintf("Checking users...");
 		j=lastuser(&sbbs->cfg);
@@ -2754,6 +2755,7 @@ void node_thread(void* arg)
 		}
 	}
 
+#if 0	/* this is handled in the event_thread now */
 	// Node Daily Event
 	sbbs->getnodedat(sbbs->cfg.node_num,&node,0);
 	if(node.misc&NODE_EVENT) {
@@ -2761,7 +2763,6 @@ void node_thread(void* arg)
 		node.status=NODE_EVENT_RUNNING;
 		sbbs->putnodedat(sbbs->cfg.node_num,&node);
 		if(sbbs->cfg.node_daily[0]) {
-//			status("Running node daily event");
 			sbbs->logentry("!:","Run node daily event");
 			sbbs->external(
 				 sbbs->cmdstr(sbbs->cfg.node_daily,nulstr,nulstr,NULL)
@@ -2771,6 +2772,7 @@ void node_thread(void* arg)
 		node.misc&=~NODE_EVENT;
 		sbbs->putnodedat(sbbs->cfg.node_num,&node); 
 	}
+#endif
 
     // Wait for all node threads to terminate
 	if(sbbs->input_thread_running || sbbs->output_thread_running) {