diff --git a/src/syncterm/bbslist.c b/src/syncterm/bbslist.c
index d2b9f3d293fdd12a276deb3d96b30ce912545468..5f17ab77dd4b373208d4e33c9acfb39d5ae845f5 100644
--- a/src/syncterm/bbslist.c
+++ b/src/syncterm/bbslist.c
@@ -492,9 +492,10 @@ void change_settings(void)
 	char	inipath[MAX_PATH];
 	FILE	*inifile;
 	str_list_t	inicontents;
-	char	opts[3][80];
-	char	*opt[3];
+	char	opts[4][80];
+	char	*opt[4];
 	int		i,j;
+	char	str[64];
 
 	get_syncterm_filename(inipath, sizeof(inipath), SYNCTERM_PATH_INI, FALSE);
 	if((inifile=fopen(inipath,"r"))!=NULL) {
@@ -505,14 +506,15 @@ void change_settings(void)
 		inicontents=strListInit();
 	}
 
-	for(i=0; i<3; i++)
+	for(i=0; i<4; i++)
 		opt[i]=opts[i];
 
 	i=0;
-	opts[2][0]=0;
+	opts[3][0]=0;
 	for(;;) {
-		sprintf(opts[0],"Confirm Program Exit: %s",settings.confirm_close?"Yes":"No");
-		sprintf(opts[1],"Startup Video Mode:   %s",screen_modes[settings.startup_mode]);
+		sprintf(opts[0],"Confirm Program Exit:     %s",settings.confirm_close?"Yes":"No");
+		sprintf(opts[1],"Startup Video Mode:       %s",screen_modes[settings.startup_mode]);
+		sprintf(opts[2],"Scrollback Buffer Lines: %d",settings.backlines);
 		switch(uifc.list(WIN_MID|WIN_SAV,0,0,0,&i,NULL,"Program Settings",opt)) {
 			case -1:
 				goto write_ini;
@@ -532,6 +534,14 @@ void change_settings(void)
 							break;
 					}
 				}
+				break;
+			case 2:
+				sprintf(str,"%d",settings.backlines);
+				if(uifc.input(WIN_SAV|WIN_MID,0,0,"Scrollback Lines",str,9,K_NUMBER)!=-1) {
+					settings.backlines=atoi(str);
+					iniSetInteger(&inicontents,"SyncTERM","ScrollBackLines",settings.backlines,&ini_style);
+				}
+				break;
 		}
 	}
 write_ini:
diff --git a/src/syncterm/menu.c b/src/syncterm/menu.c
index 8097bbd59fc832150f6fd8189060dd6978839642..ee34d9a6ee9cb3f01c5ca080994b2a7e8d982353 100644
--- a/src/syncterm/menu.c
+++ b/src/syncterm/menu.c
@@ -11,6 +11,7 @@
 #include "bbslist.h"
 #include "conn.h"
 #include "window.h"
+#include "syncterm.h"
 
 void viewscroll(void)
 {
@@ -26,8 +27,8 @@ void viewscroll(void)
 	y=wherey();
 	uifcbail();
     gettextinfo(&txtinfo);
-	scrollback=(char *)malloc((term.width*2*backlines)+(txtinfo.screenheight*txtinfo.screenwidth*2));
-	memcpy(scrollback,cterm.scrollback,term.width*2*backlines);
+	scrollback=(char *)malloc((term.width*2*settings.backlines)+(txtinfo.screenheight*txtinfo.screenwidth*2));
+	memcpy(scrollback,cterm.scrollback,term.width*2*settings.backlines);
 	gettext(1,1,txtinfo.screenwidth,txtinfo.screenheight,scrollback+(cterm.backpos)*cterm.width*2);
 	drawwin();
 	top=cterm.backpos;
diff --git a/src/syncterm/syncterm.c b/src/syncterm/syncterm.c
index 09d10727b24cf4a1a68297280531fea0e41d11e5..a7acaedb40f9cf51273309209f02eb5e32865de1 100644
--- a/src/syncterm/syncterm.c
+++ b/src/syncterm/syncterm.c
@@ -269,6 +269,7 @@ void load_settings(struct syncterm_settings *set)
 	set->confirm_close=iniReadBool(inifile,"SyncTERM","ConfirmClose",FALSE);
 fprintf(stderr,"Confirm: %d\n",set->confirm_close);
 	set->startup_mode=iniReadInteger(inifile,"SyncTERM","VideoMode",FALSE);
+	set->backlines=iniReadInteger(inifile,"SyncTERM","ScrollBackLines",2000);
 	if(inifile)
 		fclose(inifile);
 }
diff --git a/src/syncterm/syncterm.h b/src/syncterm/syncterm.h
index e71c7fffb64f69f5f50e2c8dc94f2f055877391d..c556691b4f0675c897edc9f7c67193acc7634011 100644
--- a/src/syncterm/syncterm.h
+++ b/src/syncterm/syncterm.h
@@ -12,6 +12,7 @@ enum {
 struct syncterm_settings {
 	int		confirm_close;
 	int		startup_mode;
+	int		backlines;
 };
 
 extern char *inpath;
diff --git a/src/syncterm/term.c b/src/syncterm/term.c
index b602c69089ca27553b9e3817f23221b165f0fb50..6700c1c1a1ce28c402792d7d497c75181a63fdec 100644
--- a/src/syncterm/term.c
+++ b/src/syncterm/term.c
@@ -21,8 +21,6 @@ static char recvbuf[BUFSIZE];
 
 #define DUMP
 
-int backlines=2000;
-
 struct terminal term;
 
 #define TRANSFER_WIN_WIDTH	66
@@ -862,9 +860,9 @@ BOOL doterm(struct bbslist *bbs)
 	ciomouse_addevent(CIOLIB_BUTTON_1_DRAG_END);
 	ciomouse_addevent(CIOLIB_BUTTON_3_CLICK);
 	ciomouse_addevent(CIOLIB_BUTTON_2_CLICK);
-	scrollback=malloc(term.width*2*backlines);
-	memset(scrollback,0,term.width*2*backlines);
-	cterm_init(term.height,term.width,term.x-1,term.y-1,backlines,scrollback);
+	scrollback=malloc(term.width*2*settings.backlines);
+	memset(scrollback,0,term.width*2*settings.backlines);
+	cterm_init(term.height,term.width,term.x-1,term.y-1,settings.backlines,scrollback);
 	cterm.music_enable=bbs->music;
 	ch[1]=0;
 	zrqbuf[0]=0;
diff --git a/src/syncterm/term.h b/src/syncterm/term.h
index ac3fa76f5cb12e07031ec5e54d273e69a411d4a5..c91c6b26adf8680a7f7c92341fede8718c9b2895 100644
--- a/src/syncterm/term.h
+++ b/src/syncterm/term.h
@@ -14,7 +14,6 @@ struct terminal {
 };
 
 extern struct terminal term;
-extern int backlines;
 extern int log_level;
 
 BOOL doterm(struct bbslist *);