diff --git a/src/sbbs3/logout.cpp b/src/sbbs3/logout.cpp
index 6910051a3b76d04ef15fdda8fdf93f75f6f1e51e..16bb762467061af0a67f8e7662b3801363e934dc 100644
--- a/src/sbbs3/logout.cpp
+++ b/src/sbbs3/logout.cpp
@@ -25,7 +25,7 @@
 /****************************************************************************/
 /* Function that is called after a user hangs up or logs off				*/
 /****************************************************************************/
-void sbbs_t::logout()
+void sbbs_t::logout(bool logged_in)
 {
 	char	path[MAX_PATH+1];
 	char	str[256];
@@ -60,7 +60,7 @@ void sbbs_t::logout()
 		clearbatdl();
 	}
 
-	if(sys_status&SS_USERON && thisnode.status!=NODE_QUIET && !(useron.rest&FLAG('Q')))
+	if(sys_status&SS_USERON && thisnode.status!=NODE_QUIET && !(useron.rest&FLAG('Q')) && logged_in)
 		for(i=1;i<=cfg.sys_nodes;i++)
 			if(i!=cfg.node_num) {
 				getnodedat(i,&node,0);
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index eb466adfbafc2378a144c992e6b74762354346bc..f9a4fa3d13162667b7d104376616042113d5c3a7 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -4365,6 +4365,7 @@ void node_thread(void* arg)
 				break;
 		}
 		listRemoveTaggedNode(&current_logins, sbbs->cfg.node_num, /* free_data */true);
+		sbbs->logoffstats();	/* Updates both system and node dsts.ini (daily statistics) files */
 	}
 
 #ifdef _WIN32
@@ -4375,9 +4376,7 @@ void node_thread(void* arg)
 	sbbs->hangup();	/* closes sockets, calls client_off, and shuts down the output_thread */
     node_socket[sbbs->cfg.node_num-1]=INVALID_SOCKET;
 
-	sbbs->logout();
-	if(login_success)
-		sbbs->logoffstats();	/* Updates both system and node dsts.ini (daily statistics) files */
+	sbbs->logout(login_success);
 
 	time_t now = time(NULL);
 	SAFEPRINTF(str, "%sclient.ini", sbbs->cfg.node_dir);
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index c600360e7bc1c499d0cd7bec63106e3f00b7653c..ce5b33ca04292f854d3b504d3bff3aef608d10ed 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -1035,7 +1035,7 @@ public:
 	bool	logon(void);
 
 	/* logout.cpp */
-	void	logout(void);
+	void	logout(bool logged_in = true);
 
 	/* newuser.cpp */
 	bool	newuser(void);					/* Get new user							*/