diff --git a/src/syncterm/term.c b/src/syncterm/term.c
index ba92bb085b9d5a9f0a592bf4f3f867242a5a5507..cbefd06eda92cfc174fd13c0dfbb1809c8c61aeb 100644
--- a/src/syncterm/term.c
+++ b/src/syncterm/term.c
@@ -619,6 +619,7 @@ BOOL doterm(struct bbslist *bbs)
 	int	speed;
 	int	oldmc;
 	int	updated=FALSE;
+	BOOL	sleep=TRUE;
 
 	speed = bbs->bpsrate;
 	log_level = bbs->loglevel;
@@ -639,6 +640,7 @@ BOOL doterm(struct bbslist *bbs)
 	oldmc=hold_update;
 	for(;;) {
 		hold_update=TRUE;
+		sleep=TRUE;
 		if(!speed && bbs->bpsrate)
 			speed = bbs->bpsrate;
 		if(speed)
@@ -727,8 +729,10 @@ BOOL doterm(struct bbslist *bbs)
 					continue;
 			}
 		}
-		else if (speed)
+		else if (speed) {
 			updated=FALSE;
+			sleep=FALSE;
+		}
 		hold_update=oldmc;
 		if(updated)
 			gotoxy(wherex(), wherey());