patch 9.0.0817
diff --git a/src/fileio.c b/src/fileio.c
index 701521a..ab867b7 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -590,6 +590,7 @@
 	if (!read_buffer)
 	{
 	    curbuf->b_p_eol = TRUE;
+	    curbuf->b_p_eof = FALSE;
 	    curbuf->b_start_eol = TRUE;
 	}
 	curbuf->b_p_bomb = FALSE;
@@ -2278,13 +2279,15 @@
 	    && !got_int
 	    && linerest != 0
 	    && !(!curbuf->b_p_bin
-		&& fileformat == EOL_DOS
-		&& *line_start == Ctrl_Z
-		&& ptr == line_start + 1))
+		&& fileformat == EOL_DOS))
     {
 	// remember for when writing
 	if (set_options)
+	{
 	    curbuf->b_p_eol = FALSE;
+	    if (*line_start == Ctrl_Z && ptr == line_start + 1)
+		curbuf->b_p_eof = FALSE;
+	}
 	*ptr = NUL;
 	len = (colnr_T)(ptr - line_start + 1);
 	if (ml_append(lnum, line_start, len, newfile) == FAIL)