diff --git a/ChangeLog b/ChangeLog
index bf43c6b241b972c6546762f4e36f46157aa25174..c20d1fd261486fbdc109770a7d3547ae92225da9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -114,6 +114,12 @@ CVS code -
 	  handle this. (DLR)
 	- Convert some ints with predefined boundaries to enums. (DLR)
 - cut.c:
+  do_cut_text()
+	- Set concatenate_cut to TRUE unconditionally when doing a
+	  marked cut.  This fixes an incompatibility with Pico where an
+	  extra line is uncut if we do a marked cut that includes the
+	  magicline and immediately follow it with an unmarked cut.
+	  (DLR)
   do_uncut_text()
 	- Maintain current_y's value when uncutting blocks so that
 	  smooth scrolling works correctly. (DLR)
diff --git a/src/cut.c b/src/cut.c
index 70acc4317f791f032342409f6740c41db84b7596..aa0d00960260591074652628f98d4c9389640ba0 100644
--- a/src/cut.c
+++ b/src/cut.c
@@ -264,13 +264,9 @@ void do_cut_text(void)
 	placewewant = xplustabs();
 	UNSET(MARK_ISSET);
 
-	/* If we just did a marked cut of part of a line, we should add
-	 * the first line of any cut done immediately afterward to the
-	 * end of this cut, as Pico does. */
-	if (current == mark_beginbuf && current_x <
-		strlen(current->data))
-	    concatenate_cut = TRUE;
 	marked_cut = CUT_MARKED;
+	concatenate_cut = TRUE;
+
 	edit_refresh();
 	set_modified();
 	return;