patch 9.0.0817
diff --git a/src/bufwrite.c b/src/bufwrite.c
index 3ff7fb3..713dac5 100644
--- a/src/bufwrite.c
+++ b/src/bufwrite.c
@@ -2050,6 +2050,10 @@
 		len = 0;
 		write_info.bw_start_lnum = lnum;
 	    }
+	    if (!buf->b_p_fixeol && buf->b_p_eof)
+		// write trailing CTRL-Z
+		(void)write_eintr(write_info->bw_fd, "\x1a", 1);
+
 	    // write failed or last line has no EOL: stop here
 	    if (end == 0
 		    || (lnum == end