diff --git a/src/sbbs3/scfg/scfg.c b/src/sbbs3/scfg/scfg.c
index 83079e81c63672956816a8983b8e79c78b9939e3..ea77aec5386263eb1fff1ff79735d128925f8a5e 100644
--- a/src/sbbs3/scfg/scfg.c
+++ b/src/sbbs3/scfg/scfg.c
@@ -48,6 +48,7 @@ char tmp[256];
 char error[256];
 char* area_sort_desc[] = { "Index Position", "Long Name", "Short Name", "Internal Code Suffix", NULL };
 static char title[128];
+size_t title_len;
 const char* hostname = NULL;
 int ciolib_mode = CIOLIB_MODE_AUTO;
 enum text_modes video_mode = LCD80X25;
@@ -406,10 +407,10 @@ void display_filename(BOOL force)
 {
 	static char last[MAX_PATH + 1];
 	const char* fname = cfg.filename;
-	if(strlen(fname) + 30 > uifc.scrn_width)
+	if(strlen(fname) + title_len + 5 > uifc.scrn_width)
 		fname = getfname(fname);
 	if(force || strcmp(last, fname) != 0)
-		uifc.printf(29, 1, uifc.bclr|(uifc.cclr<<4), "%*s", uifc.scrn_width - 30, fname);
+		uifc.printf(title_len + 4, 1, uifc.bclr|(uifc.cclr<<4), "%*s", uifc.scrn_width - (title_len + 5), fname);
 	SAFECOPY(last, fname);
 }
 
@@ -764,6 +765,7 @@ int main(int argc, char **argv)
 		printf(" USCRN (len=%d) failed!\n",uifc.scrn_len+1);
 		bail(1);
 	}
+	title_len = strlen(title);
 
 	SAFEPRINTF(cfg_fname, "%smain.ini", cfg.ctrl_dir);
 	if(!fexist(cfg_fname)) {