diff --git a/src/winio.c b/src/winio.c
index 73fdcddf57e748bebb925eccf39e320fa976c5d7..1e6cc298a31a08fbf85857238ee30ccb9b5fc0c5 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -1925,16 +1925,12 @@ char *display_string(const char *buf, size_t start_col, size_t span,
 	   buf += charlength + 7;
     }
 
-    /* Null-terminate converted. */
-    converted[index] = '\0';
-
     /* If there is more text than can be shown, make room for the $. */
     if (*buf != '\0' && isdata && !ISSET(SOFTWRAP))
-	span--;
+	index = move_mbleft(converted, index);
 
-    /* Make sure converted takes up no more than span columns. */
-    index = actual_x(converted, span);
-    null_at(&converted, index);
+    /* Null-terminate the converted string. */
+    converted[index] = '\0';
 
     return converted;
 }