diff --git a/files.c b/files.c
index 43684e5fdee9ef5691bfc839242b6af0093b12b1..85739e96dea30600cdd543b7fd669e5b157de7b4 100644
--- a/files.c
+++ b/files.c
@@ -672,15 +672,14 @@ int input_tab(char *buf, int place, int lastWasTab)
 			match_matches++;
 		}
 		if (match_matches == num_matches && 
-			(i == num_matches || matches[i][pos] != 0)) {
-
+			(i == num_matches || matches[i] != 0)) {
 		    /* All the matches have the same character at pos+1,
 			so paste it into buf... */
+		    buf = nrealloc(buf, strlen(buf) + 2);
 		    strncpy(buf + pos, matches[0] + pos, 1);
 	 	    newplace++;
 		    pos++;
-		}
-		else {
+		} else {
 		    beep();
 		    break;
 		}
@@ -718,8 +717,13 @@ int input_tab(char *buf, int place, int lastWasTab)
 
 		strcat(foo, "  ");
 
-		col += waddnstr(edit, foo, strlen(foo));
-		if (col > (COLS * .8)  && matches[i + 1] != NULL) {
+		/* now, put the match on the screen */
+		waddnstr(edit, foo, strlen(foo));
+		col += strlen(foo);
+
+		/* And if the next match isn't going to fit on the
+		   line, move to the next one */
+		if (col > (COLS - longestname)  && matches[i + 1] != NULL) {
 		    editline++;
 		    wmove(edit, editline, 0);
 		    col = 0;
diff --git a/po/nano.pot b/po/nano.pot
index 10453bd7c840aeda405386d2d8405ec8c968b9f2..eea67e0f31d8e76d34046e87c9ffaf97e347de02 100644
--- a/po/nano.pot
+++ b/po/nano.pot
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-11-05 16:56-0500\n"
+"POT-Creation-Date: 2000-11-05 17:48-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"