diff --git a/ChangeLog b/ChangeLog
index a47b8f6546a163ddff14c9c501309868206ac012..23020d65af8cda9a230c2d8a028baa6135bf684d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -77,6 +77,12 @@ CVS code -
 	  string.  Also, return the stripped path instead of modifying
 	  path. (DLR)
 - files.c:
+  do_insertfile()
+	- If we're in view mode, as we can be if multibuffer mode is on,
+	  don't mark the file as modified. (DLR)
+	- If we execute a command in a new buffer, move back to the
+	  beginning of the first line of the buffer afterwards, for
+	  consistency. (DLR)
   get_full_path()
 	- Don't return NULL when the current directory doesn't exist, as
 	  we can still recover from that. (DLR, found by Mike Frysinger)
@@ -93,6 +99,10 @@ CVS code -
 - nano.h:
 	- Remove the manual disabling of color support if regex.h isn't
 	  found, as configure.ac now handles that. (DLR)
+- text.c:
+  execute_command()
+	- Remove the marking of the file as modified, as do_insertfile()
+	  handles that. (DLR)
 - winio.c:
   display_string()
 	- Properly handle buf[start_index]'s being a null terminator.
diff --git a/src/files.c b/src/files.c
index 34ab942d900c24ccffa5a209af529945f77bd0e4..cf4234c9dc5dae2999635c01e9cf232f1c83dbb9 100644
--- a/src/files.c
+++ b/src/files.c
@@ -811,8 +811,18 @@ void do_insertfile(
 
 		/* Save the command's output in the current buffer. */
 		execute_command(answer);
-	    } else {
+
+#ifdef ENABLE_MULTIBUFFER
+		if (ISSET(MULTIBUFFER)) {
+		    /* Move back to the beginning of the first line of
+		     * the buffer. */
+		    openfile->current = openfile->fileage;
+		    openfile->current_x = 0;
+		    openfile->placewewant = 0;
+		}
 #endif
+	    } else {
+#endif /* !NANO_TINY */
 		/* Make sure the path to the file specified in answer is
 		 * tilde-expanded. */
 		answer = mallocstrassn(answer,
@@ -861,8 +871,10 @@ void do_insertfile(
 		/* Restore the old place we want. */
 		openfile->placewewant = pww_save;
 
-		/* Mark the file as modified. */
-		set_modified();
+		/* Mark the file as modified, unless we're here in view
+		 * mode, which we can be if multibuffer mode is on. */
+		if (!ISSET(VIEW_MODE))
+		    set_modified();
 
 		/* Update the screen. */
 		edit_refresh();
diff --git a/src/text.c b/src/text.c
index 4e3f26e0c77850e3cd94640dc5d824397412c44a..88b39b0501140bd3055d9c8ae1825c44d74e246a 100644
--- a/src/text.c
+++ b/src/text.c
@@ -497,11 +497,6 @@ bool execute_command(const char *command)
 
     read_file(f, "stdin");
 
-    /* If multibuffer mode is on, we could be here in view mode.  If so,
-     * don't set the modification flag. */
-    if (!ISSET(VIEW_MODE))
-	set_modified();
-
     if (wait(NULL) == -1)
 	nperror("wait");