diff --git a/src/syncterm/bbslist.c b/src/syncterm/bbslist.c
index 810694265f207c181fd73f366cf10e67e02f9002..d13dc4b8fee3c2426c851119c280fae3032ef0c1 100644
--- a/src/syncterm/bbslist.c
+++ b/src/syncterm/bbslist.c
@@ -384,7 +384,7 @@ viewofflinescroll(void)
 	setfont(0, false, 4);
 	drawwin();
 	set_modepalette(palettes[COLOUR_PALETTE]);
-	top = scrollback_lines;
+	top = scrollback_pos;
 	gotoxy(1, 1);
 	textattr(uifc.hclr | (uifc.bclr << 4) | BLINK);
 	gettextinfo(&sbtxtinfo);
diff --git a/src/syncterm/syncterm.c b/src/syncterm/syncterm.c
index 938f7c84686cea6b6ebcf9449ffb4f8f04f1367d..5e8d01ac17d1f1120c83be80278fab0753d61256 100644
--- a/src/syncterm/syncterm.c
+++ b/src/syncterm/syncterm.c
@@ -137,6 +137,7 @@ struct syncterm_settings settings;
 char                    *font_names[sizeof(conio_fontdata) / sizeof(struct conio_font_data_struct)];
 struct vmem_cell        *scrollback_buf = NULL;
 unsigned int             scrollback_lines = 0;
+unsigned int             scrollback_pos = 0;
 unsigned int             scrollback_mode = C80;
 unsigned int             scrollback_cols = 80;
 int                      safe_mode = 0;
diff --git a/src/syncterm/syncterm.h b/src/syncterm/syncterm.h
index cc01981bdf0a4dffa306fd5dfa30e9e9d7445ecd..dde9683e2f05bbb22207321faddad345d888494e 100644
--- a/src/syncterm/syncterm.h
+++ b/src/syncterm/syncterm.h
@@ -87,6 +87,7 @@ extern struct vmem_cell        *scrollback_buf;
 extern uint32_t                *scrollback_fbuf;
 extern uint32_t                *scrollback_bbuf;
 extern unsigned int             scrollback_lines;
+extern unsigned int             scrollback_pos;
 extern unsigned int             scrollback_mode;
 extern unsigned int             scrollback_cols;
 extern struct syncterm_settings settings;
diff --git a/src/syncterm/term.c b/src/syncterm/term.c
index a4544e973cee2ef94a591918c38a434bd32b5d23..214a076c7d295155f402f39a183cded666437f43 100644
--- a/src/syncterm/term.c
+++ b/src/syncterm/term.c
@@ -3771,6 +3771,7 @@ doterm(struct bbslist *bbs)
 								uifcmsg("Disconnected",
 								    "`Disconnected`\n\nRemote host dropped connection");
 							check_exit(false);
+							scrollback_pos = cterm->backpos;
 							cterm_clearscreen(cterm, cterm->attr); /* Clear screen into
                                                                                                 * scrollback */
 							scrollback_lines = cterm->backpos;
@@ -4130,6 +4131,7 @@ doterm(struct bbslist *bbs)
 					    "Selecting Yes closes the connection\n")) {
 						freescreen(savscrn);
 						setup_mouse_events(&ms);
+						scrollback_pos = cterm->backpos;
 						cterm_clearscreen(cterm, cterm->attr); /* Clear screen into
                                                                                         * scrollback */
 						scrollback_lines = cterm->backpos;
@@ -4161,6 +4163,7 @@ doterm(struct bbslist *bbs)
 					j = wherey();
 					switch (syncmenu(bbs, &speed)) {
 						case -1:
+							scrollback_pos = cterm->backpos;
 							cterm_clearscreen(cterm, cterm->attr); /* Clear screen into
                                                                                                 * scrollback */
 							scrollback_lines = cterm->backpos;
@@ -4204,6 +4207,7 @@ doterm(struct bbslist *bbs)
 							break;
 						case 12:
 #endif
+							scrollback_pos = cterm->backpos;
 							cterm_clearscreen(cterm, cterm->attr); /* Clear screen into
                                                                                                 * scrollback */
 							scrollback_lines = cterm->backpos;