diff --git a/src/sbbs3/sbbs_ini.c b/src/sbbs3/sbbs_ini.c
index 0af6873dcb552581b4734c1321240945909de2f4..05068c342018f1eaa2b2b28c3b7efc64b27250da 100644
--- a/src/sbbs3/sbbs_ini.c
+++ b/src/sbbs3/sbbs_ini.c
@@ -88,6 +88,7 @@ void sbbs_read_ini(
 	)
 {
 	const char*	section;
+	const char* default_term;
 	char*		ctrl_dir;
 	char*		host_name;
 
@@ -135,6 +136,16 @@ void sbbs_read_ini(
 	bbs->js_max_bytes
 		=iniReadInteger(fp,section,"JS_MaxBytes",0);
 
+	/* Set default terminal type to "stock" termcap closest to "ansi-bbs" */
+#if defined(__FreeBSD__)
+	default_term="cons25";
+#else
+	default_term="pc3";
+#endif
+
+	SAFECOPY(bbs->xtrn_term
+		,iniReadString(fp,section,"ExternalTerm",default_term));
+
 	SAFECOPY(bbs->answer_sound
 		,iniReadString(fp,section,"AnswerSound",nulstr));
 	SAFECOPY(bbs->hangup_sound
diff --git a/src/sbbs3/startup.h b/src/sbbs3/startup.h
index ed813330cb3e9453fab0c0e0d196e32f5992582a..79606d3cf3a4f00d1273cdf1206986d4ac873002 100644
--- a/src/sbbs3/startup.h
+++ b/src/sbbs3/startup.h
@@ -88,7 +88,9 @@ typedef struct {
     char	reserved_path3[128];
 	char	answer_sound[128];
 	char	hangup_sound[128];
-    char	reserved_path2[128];
+	char	xtrn_term[32];			/* external terminal type (e.g. "ansi-bbs") */
+	char	reserved_str2[32];
+    char	reserved_str1[64];
     char	host_name[128];
 	BOOL	recycle_now;
 
diff --git a/src/sbbs3/xtrn.cpp b/src/sbbs3/xtrn.cpp
index 704ac0def151c88dc1f3422730ade8b310446ac3..a80a26f91b9fdcde1fa5bab649a83ba6d6ecd9de 100644
--- a/src/sbbs3/xtrn.cpp
+++ b/src/sbbs3/xtrn.cpp
@@ -48,7 +48,7 @@
 	#include <pty.h>
 #endif
 	#include <termios.h>
-	static void setup_term(int fd);	
+	static void setup_term(int fd, char* term);	
 #endif
 #define XTRN_IO_BUF_LEN 5000
 
@@ -1011,7 +1011,7 @@ int sbbs_t::external(char* cmdline, long mode, char* startup_dir)
 		}
 	}
 	if(pid==0) {	/* child process */
-		setup_term(0);
+		setup_term(0, startup->xtrn_term);
 		if(startup_dir!=NULL && startup_dir[0])
 			chdir(startup_dir);
 
@@ -1331,7 +1331,7 @@ char * sbbs_t::cmdstr(char *instr, char *fpath, char *fspec, char *outstr)
 
 #ifdef __unix__
 void
-setup_term(int fd)
+setup_term(int fd, char* term)
 {
 	struct termios tt;
 	// Shoud set speed here...
@@ -1342,7 +1342,7 @@ setup_term(int fd)
 	tt.c_lflag = TTYDEF_LFLAG;
 	tcsetattr(fd, TCSAFLUSH, &tt);
 
-	setenv("TERM","ansi-bbs",1);
+	setenv("TERM",term,1);
 	/* The following termcap entry is nice:
 
 <---SNIP--->