diff --git a/src/syncterm/term.c b/src/syncterm/term.c
index 6518e031a4be152afc2344b83e1eadfd4ea4f7cd..2b049022cbab62bb924464fe19e042d92da0ddde 100644
--- a/src/syncterm/term.c
+++ b/src/syncterm/term.c
@@ -334,6 +334,7 @@ update_status(struct bbslist *bbs, int speed, int ooii_mode, bool ata_inv)
 	static int        oldspeed = 0;
 	static int        lastmouse = 0;
 	int               newmouse;
+	double            timeond;
 	int               timeon;
 	char              sep;
 	int               oldfont_norm;
@@ -378,12 +379,13 @@ update_status(struct bbslist *bbs, int speed, int ooii_mode, bool ata_inv)
 	lastupd = now;
 	lastmouse = newmouse;
 	oldspeed = speed;
-	if (now > (bbs->connected + 359999))
+	timeond = difftime(now, bbs->connected);
+	if (timeond > 350000)
 		timeon = 350000;
-	else if (now < bbs->connected)
+	else if (timeond < 0)
 		timeon = 0;
 	else
-		timeon = (int)(now - bbs->connected);
+		timeon = timeond;
 	gettextinfo(&txtinfo);
 	oldscroll = _wscroll;
 	hold_update = true;