diff --git a/src/sbbs3/xtrn_sec.cpp b/src/sbbs3/xtrn_sec.cpp
index 33cc509d4d54b3b5fb4738cfd54fb188850c44c8..42228d319cc808feeb274a193c7c3354f24e1feb 100644
--- a/src/sbbs3/xtrn_sec.cpp
+++ b/src/sbbs3/xtrn_sec.cpp
@@ -151,6 +151,7 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 	struct tm tm;
 	struct tm tl;
 	stats_t stats;
+	long term = term_supports();
 
 	char	node_dir[MAX_PATH+1];
 	char	ctrl_dir[MAX_PATH+1];
@@ -212,8 +213,8 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 			,cfg.sys_nodes						/* Total system nodes */
 			,cfg.node_num						/* Current node */
 			,tleft								/* User Timeleft in seconds */
-			,term_supports(ANSI)				/* User ANSI ? (Yes/Mono/No) */
-				? term_supports(COLOR)
+			,(term & ANSI)						/* User ANSI ? (Yes/Mono/No) */
+				? (term & COLOR)
 				? "Yes":"Mono":"No"
 			,rows								/* User Screen lines */
 			,useron.cdt+useron.freecdt);		/* User Credits */
@@ -334,7 +335,7 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 			,useron.level						/* User SL */
 			,0									/* Cosysop? */
 			,SYSOP								/* Sysop? (1/0) */
-			,term_supports(ANSI)				/* ANSI ? (1/0) */
+			,INT_TO_BOOL(term & ANSI)			/* ANSI ? (1/0) */
 			,online==ON_REMOTE);				/* Remote (1/0) */
 		lfexpand(str,misc);
 		write(file,str,strlen(str));
@@ -416,8 +417,8 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 			,unixtodstr(&cfg,useron.laston,tmp)	/* 17: User last on date */
 			,tleft								/* 18: User time left in sec */
 			,tleft/60							/* 19: User time left in min */
-			,useron.misc&NO_EXASCII 			/* 20: GR if COLOR ANSI */
-				? "7E" : (useron.misc&(ANSI|COLOR))==(ANSI|COLOR) ? "GR" : "NG");
+			,(term & NO_EXASCII)				/* 20: GR if COLOR ANSI */
+				? "7E" : (term & (ANSI|COLOR)) == (ANSI|COLOR) ? "GR" : "NG");
 		lfexpand(str,misc);
 		write(file,str,strlen(str));
 
@@ -451,7 +452,7 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 
 		localtime_r(&ns_time,&tm);
 		safe_snprintf(str, sizeof(str), "%c\n%c\n%u\n%lu\n%02d/%02d/%02d\n"
-			,(useron.misc&(NO_EXASCII|ANSI|COLOR))==ANSI
+			,(term & (NO_EXASCII|ANSI|COLOR)) == ANSI
 				? 'Y':'N'                       /* 39: ANSI supported but NG mode */
 			,'Y'                                /* 40: Use record locking */
 			,cfg.color[clr_external]			/* 41: BBS default color */
@@ -526,7 +527,7 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 			,tmp								/* User's firstname */
 			,p									/* User's lastname */
 			,useron.location					/* User's city */
-			,term_supports(ANSI)				/* 1=ANSI 0=ASCII */
+			,INT_TO_BOOL(term & ANSI)			/* 1=ANSI 0=ASCII */
 			,useron.level						/* Security level */
 			,tleft/60); 						/* Time left in minutes */
 		strupr(str);
@@ -577,7 +578,7 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 		if(useron.misc&DELETED) c|=(1<<0);
 		if(useron.misc&CLRSCRN) c|=(1<<1);
 		if(useron.misc&UPAUSE)	 c|=(1<<2);
-		if(term_supports(ANSI))	c|=(1<<3);
+		if(term & ANSI)			c|=(1<<3);
 		if(useron.sex=='F')     c|=(1<<7);
 		write(file,&c,1);						/* Attrib */
 		write(file,&useron.flags1,4);			/* Flags */
@@ -655,7 +656,7 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 		write(file,&c,1);						/* ScreenClear */
 		c=useron.misc&UPAUSE ? 1:0;
 		write(file,&c,1);						/* MorePrompts */
-		c=useron.misc&NO_EXASCII ? 0:1;
+		c=(term & NO_EXASCII) ? 0:1;
 		write(file,&c,1);						/* GraphicsMode */
 		c=useron.xedit ? 1:0;
 		write(file,&c,1);						/* ExternEdit */
@@ -666,7 +667,7 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 		write(file,str,49); 					/* ChatReason */
 		c=0;
 		write(file,&c,1);						/* ExternLogoff */
-		c=(char)term_supports(ANSI);
+		c=(char)INT_TO_BOOL(term & ANSI);
 		write(file,&c,1);						/* ANSI_Capable */
 		close(file);
 	}
@@ -713,7 +714,7 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 			,useron.location					/* User location */
 			,useron.level						/* Security level */
 			,tleft/60							/* Time left in min */
-			,term_supports(ANSI) ? "COLOR":"MONO"  /* ANSI ??? */
+			,(term & ANSI) ? "COLOR":"MONO"		/* ANSI ??? */
 			,useron.pass						/* Password */
 			,useron.number);					/* User number */
 		lfexpand(str,misc);
@@ -801,8 +802,8 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 			,startup->answer_sound[0] ? -1:0	/* Caller Alarm on/off */
 			,' ' 								/* Sysop next flag */
 			,0									/* Error corrected */
-			,useron.misc&NO_EXASCII ? '7'       /* Graphics mode */
-				: (useron.misc&(COLOR|ANSI))==(COLOR|ANSI) ? 'Y':'N'
+			,(term & NO_EXASCII) ? '7'			/* Graphics mode */
+				: (term & (COLOR|ANSI)) == (COLOR|ANSI) ? 'Y':'N'
 			,'A'                                /* Node chat status */
 			,(uint)dte_rate 					/* DTE Port Speed */
 			,connection 						/* Connection description */
@@ -873,7 +874,7 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 			,cfg.com_port						/* COM Port number */
 			,' ' 								/* Reserved */
 			,' ' 								/* "" */
-			,term_supports(ANSI)				/* 1=ANSI 0=NO ANSI */
+			,INT_TO_BOOL(term & ANSI)			/* 1=ANSI 0=NO ANSI */
 			,"01-01-80"                         /* last event date */
 			,0,0								/* last event minute */
 			,0									/* caller exited to dos */
@@ -1036,7 +1037,7 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 			"%s\n%s\n%lu\n%s\n%u\n%u\n%u\n%u\n%u\n%lu\n%u\n"
 			"%lu\n%lu\n%s\n%s\n"
 			,dropdir
-			,term_supports(ANSI) ? "TRUE":"FALSE"  /* ANSI ? True or False */
+			,(term & ANSI) ? "TRUE":"FALSE"		/* ANSI ? True or False */
 			,useron.level						/* Security level */
 			,useron.uls 						/* Total uploads */
 			,useron.dls 						/* Total downloads */
@@ -1104,8 +1105,8 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 
 		safe_snprintf(str, sizeof(str), "%s\n%ld\n%d\n%lu\n%lu\n%u\n%lu\n"
 			,name								/* Complete name of user */
-			,term_supports(ANSI)	 			/* ANSI ? */
-			,term_supports(NO_EXASCII) ? 0:1	/* IBM characters ? */
+			,INT_TO_BOOL(term & ANSI)			/* ANSI ? */
+			,!INT_TO_BOOL(term & NO_EXASCII)	/* IBM characters ? */
 			,rows								/* Page length */
 			,dte_rate							/* Baud rate */
 			,online==ON_LOCAL ? 0:cfg.com_port	/* COM port */
@@ -1133,7 +1134,7 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 			,useron.pass						/* User's password */
 			,useron.level						/* User's level */
 			,useron.misc&EXPERT ? 'Y':'N'       /* Expert? */
-			,term_supports(ANSI) ? 'Y':'N'      /* ANSI? */
+			,(term & ANSI) ? 'Y':'N'			/* ANSI? */
 			,tleft/60							/* Minutes left */
 			,useron.phone						/* User's phone number */
 			,useron.location					/* User's city and state */
@@ -1180,7 +1181,7 @@ void sbbs_t::xtrndat(const char *name, const char *dropdir, uchar type, ulong tl
 			,name
 			,useron.level
 			,tleft/60
-			,term_supports(ANSI)
+			,INT_TO_BOOL(term & ANSI)
 			,cfg.node_num);
 		lfexpand(str,misc);
 		write(file,str,strlen(str));