diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index f7eb2212c733afe0ed571bdec11c588494f7a473..51290e3cfafcb9082cf76c87daf12f589d75724f 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -2353,7 +2353,7 @@ static void ctrl_thread(void* arg)
 		if (client_highwater > 1)
 			lprintf(LOG_NOTICE, "%04d New active client highwater mark: %u"
 			        , sock, client_highwater);
-		mqtt_pub_uintval(&mqtt, TOPIC_SERVER, "highwater", client_highwater);
+		mqtt_pub_uintval(&mqtt, TOPIC_SERVER, "highwater", mqtt.highwater = client_highwater);
 	}
 	update_clients();
 
diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index 27a767083e315ab9d41c38d45ce8b462d3e1f699..1c1887cccf92bafa469d36c7226ec20f4e628446 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -1828,7 +1828,7 @@ static void pop3_thread(void* arg)
 		if (client_highwater > 1)
 			lprintf(LOG_NOTICE, "%04d POP3 New active client highwater mark: %u"
 			        , pop3.socket, client_highwater);
-		mqtt_pub_uintval(&mqtt, TOPIC_SERVER, "highwater", client_highwater);
+		mqtt_pub_uintval(&mqtt, TOPIC_SERVER, "highwater", mqtt.highwater = client_highwater);
 	}
 	update_clients();
 
@@ -5114,7 +5114,7 @@ static void smtp_thread(void* arg)
 		if (client_highwater > 1)
 			lprintf(LOG_NOTICE, "%04d SMTP New active client highwater mark: %u"
 			        , smtp.socket, client_highwater);
-		mqtt_pub_uintval(&mqtt, TOPIC_SERVER, "highwater", client_highwater);
+		mqtt_pub_uintval(&mqtt, TOPIC_SERVER, "highwater", mqtt.highwater = client_highwater);
 	}
 	update_clients();
 
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index a25613ff0cbd480809dacb5cdf594781ff7268b8..78d7ffaa94d0ee676ee6395c0d64951ab786f457 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -6002,7 +6002,7 @@ NO_PASSTHRU:
 				if (client_highwater > 1)
 					lprintf(LOG_NOTICE, "Node %d New active client highwater mark: %u"
 					        , node_num, client_highwater);
-				mqtt_pub_uintval(&mqtt, TOPIC_SERVER, "highwater", client_highwater);
+				mqtt_pub_uintval(&mqtt, TOPIC_SERVER, "highwater", mqtt.highwater = client_highwater);
 			}
 		}
 
diff --git a/src/sbbs3/mqtt.c b/src/sbbs3/mqtt.c
index ffbccc7ad6a66ae7634427cecbb370d2e44900db..0345246bb767dda068f86a19fc9f2d1f21173e5e 100644
--- a/src/sbbs3/mqtt.c
+++ b/src/sbbs3/mqtt.c
@@ -714,7 +714,7 @@ int mqtt_server_startup(struct mqtt* mqtt)
 	mqtt_pub_strval(mqtt, TOPIC_HOST_LEVEL, NULL, mqtt->startup->host_name);
 	mqtt_pub_strval(mqtt, TOPIC_SERVER, "version", mqtt->server_version);
 	mqtt_pub_uintval(mqtt, TOPIC_SERVER, "served", mqtt->served);
-	mqtt_pub_uintval(mqtt, TOPIC_SERVER, "highwater", 0);
+	mqtt_pub_uintval(mqtt, TOPIC_SERVER, "highwater", mqtt->highwater);
 	mqtt_pub_uintval(mqtt, TOPIC_SERVER, "error_count", mqtt->error_count);
 	return result;
 }
diff --git a/src/sbbs3/mqtt.h b/src/sbbs3/mqtt.h
index 3a7492a0943b6f4e8d12dd52dc1790f31ee66ecc..265e7ac1f8d4d44bd7ef463b543da67a094301d2 100644
--- a/src/sbbs3/mqtt.h
+++ b/src/sbbs3/mqtt.h
@@ -49,6 +49,7 @@ struct mqtt {
 	ulong max_clients;
 	ulong error_count;
 	ulong served;
+	ulong highwater;
 	link_list_t client_list;
 	struct startup* startup;
 	enum server_state server_state;
diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index 59d517d4f0011b8b3b3dc3e964218fc952428f71..7ab927a56b4534bdd3007e15e8d39c6bba443649 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -240,7 +240,7 @@ static void update_clients(void)
 		if (client_highwater > 1)
 			lprintf(LOG_NOTICE, "New active client highwater mark: %u"
 			        , client_highwater);
-		mqtt_pub_uintval(&mqtt, TOPIC_SERVER, "highwater", client_highwater);
+		mqtt_pub_uintval(&mqtt, TOPIC_SERVER, "highwater", mqtt.highwater = client_highwater);
 	}
 }
 
diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c
index 56d766bdb91ed08d77e8aa1a3f55742c946a48ae..c1f08206eaa75b1ae9df2ea5f64d1905db7293f2 100644
--- a/src/sbbs3/websrvr.c
+++ b/src/sbbs3/websrvr.c
@@ -6869,7 +6869,7 @@ void http_session_thread(void* arg)
 		if (client_highwater > 1)
 			lprintf(LOG_NOTICE, "%04d New active client highwater mark: %u"
 			        , session.socket, client_highwater);
-		mqtt_pub_uintval(&mqtt, TOPIC_SERVER, "highwater", client_highwater);
+		mqtt_pub_uintval(&mqtt, TOPIC_SERVER, "highwater", mqtt.highwater = client_highwater);
 	}
 	update_clients();
 	SAFECOPY(session.username, unknown);