diff --git a/watch.c b/watch.c
index 39ec16a2..c87eeb52 100644
--- a/watch.c
+++ b/watch.c
@@ -364,7 +364,7 @@ wint_t my_getwc(FILE * s)
 #endif	/* WITH_WATCH8BIT */
 
 #ifdef WITH_WATCH8BIT
-static void output_header(wchar_t *restrict wcommand, int wcommand_columns, int wcommand_characters, double interval)
+static void output_header(wchar_t *restrict wcommand, int wcommand_characters, double interval)
 #else
 static void output_header(char *restrict command, double interval)
 #endif	/* WITH_WATCH8BIT */
@@ -374,6 +374,7 @@ static void output_header(char *restrict command, double interval)
 	char *header;
 	char *right_header;
 	char hostname[HOST_NAME_MAX + 1];
+	int command_columns = 0;	/* not including final \0 */
 
 	gethostname(hostname, sizeof(hostname));
 
@@ -407,10 +408,11 @@ static void output_header(char *restrict command, double interval)
 				mvaddstr(0, width - rhlen - 4, "... ");
 			} else {
 #ifdef WITH_WATCH8BIT
-				if (width < rhlen + hlen + wcommand_columns) {
+	            command_columns = wcswidth(wcommand, -1);
+				if (width < rhlen + hlen + command_columns) {
 					/* print truncated */
 					int available = width - rhlen - hlen;
-					int in_use = wcommand_columns;
+					int in_use = command_columns;
 					int wcomm_len = wcommand_characters;
 					while (available - 4 < in_use) {
 						wcomm_len--;
@@ -422,7 +424,14 @@ static void output_header(char *restrict command, double interval)
 					mvaddwstr(0, hlen, wcommand);
 				}
 #else
-				mvaddnstr(0, hlen, command, width - rhlen - hlen);
+                command_columns = strlen(command);
+                if (width < rhlen + hlen + command_columns) {
+                    /* print truncated */
+                    mvaddnstr(0, hlen, command, width - rhlen - hlen - 4);
+                    mvaddstr(0, width - rhlen - 4, "... ");
+                } else {
+                    mvaddnstr(0, hlen, command, width - rhlen - hlen);
+                }
 #endif	/* WITH_WATCH8BIT */
 			}
 		}
@@ -661,7 +670,6 @@ int main(int argc, char *argv[])
 				 * keeping only */
 #ifdef WITH_WATCH8BIT
 	wchar_t *wcommand = NULL;
-	int wcommand_columns = 0;	/* not including final \0 */
 	int wcommand_characters = 0;	/* not including final \0 */
 #endif	/* WITH_WATCH8BIT */
 
@@ -773,7 +781,6 @@ int main(int argc, char *argv[])
 		exit(EXIT_FAILURE);
 	}
 	mbstowcs(wcommand, command, wcommand_characters + 1);
-	wcommand_columns = wcswidth(wcommand, -1);
 #endif	/* WITH_WATCH8BIT */
 
 	get_terminal_size();