diff --git a/ChangeLog b/ChangeLog
index 0726ba482977d77e6a8f2a340f1b5f0c477d0169..5ef478222e14c6ee87ab6dc6deaf4240b8a348bc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -32,6 +32,9 @@ CVS code -
 	- Replace a set_modified() with SET(MODIFIED) to avoid an
 	  unnecessary update, and remove an unneeded clearok(FALSE).
 	  (DLR)
+  do_output()
+	- Fix off-by-one error that allowed wrapping when we inserted a
+	  tab, for Pico compatibility. (DLR)
 - utils.c:
   num_of_digits()
 	- Use a size_t instead of an int, and rename to digits(). (DLR)
diff --git a/src/nano.c b/src/nano.c
index 137d0048d7300a99ba924638a80da8533bb8a6ae..01c475ecc679459fa26bf54b88abc50dbf20e756 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -3927,8 +3927,9 @@ void do_output(char *output, size_t output_len, bool allow_cntrls)
 	do_right(FALSE);
 
 #ifndef DISABLE_WRAPPING
-	/* If we're wrapping text, we need to call edit_refresh(). */
-	if (!ISSET(NO_WRAP) && output[i] != '\t') {
+	/* If we're wrapping text and we didn't insert a tab, we need to
+	 * call edit_refresh(). */
+	if (!ISSET(NO_WRAP) && output[i - 1] != '\t') {
 	    bool do_refresh_save = do_refresh;
 
 	    do_refresh = do_wrap(current);