diff --git a/src/channel.c b/src/channel.c
index 5d1b83a..6351c89 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -2537,19 +2537,26 @@
 
 	FOR_ALL_WINDOWS(wp)
 	{
-	    if (wp->w_buffer == buffer
-		    && (save_write_to
-			? wp->w_cursor.lnum == lnum + 1
-			: (wp->w_cursor.lnum == lnum
-			    && wp->w_cursor.col == 0)))
+	    if (wp->w_buffer == buffer)
 	    {
-		++wp->w_cursor.lnum;
-		save_curwin = curwin;
-		curwin = wp;
-		curbuf = curwin->w_buffer;
-		scroll_cursor_bot(0, FALSE);
-		curwin = save_curwin;
-		curbuf = curwin->w_buffer;
+		int move_cursor = save_write_to
+			    ? wp->w_cursor.lnum == lnum + 1
+			    : (wp->w_cursor.lnum == lnum
+				&& wp->w_cursor.col == 0);
+
+		// If the cursor is at or above the new line, move it one line
+		// down.  If the topline is outdated update it now.
+		if (move_cursor || wp->w_topline > buffer->b_ml.ml_line_count)
+		{
+		    if (move_cursor)
+			++wp->w_cursor.lnum;
+		    save_curwin = curwin;
+		    curwin = wp;
+		    curbuf = curwin->w_buffer;
+		    scroll_cursor_bot(0, FALSE);
+		    curwin = save_curwin;
+		    curbuf = curwin->w_buffer;
+		}
 	    }
 	}
 	redraw_buf_and_status_later(buffer, VALID);
diff --git a/src/testdir/check.vim b/src/testdir/check.vim
index 7f37f1c..48dbd85 100644
--- a/src/testdir/check.vim
+++ b/src/testdir/check.vim
@@ -21,3 +21,19 @@
     throw 'Skipped: ' .. a:name .. ' function missing'
   endif
 endfunc
+
+" Command to check for running on MS-Windows
+command CheckMSWindows call CheckMSWindows()
+func CheckMSWindows()
+  if !has('win32')
+    throw 'Skipped: only works on MS-Windows'
+  endif
+endfunc
+
+" Command to check for running on Unix
+command CheckUnix call CheckUnix()
+func CheckUnix()
+  if !has('unix')
+    throw 'Skipped: only works on Unix'
+  endif
+endfunc
diff --git a/src/testdir/dumps/Test_job_buffer_scroll_1.dump b/src/testdir/dumps/Test_job_buffer_scroll_1.dump
new file mode 100644
index 0000000..11abe60
--- /dev/null
+++ b/src/testdir/dumps/Test_job_buffer_scroll_1.dump
@@ -0,0 +1,10 @@
+|s+0&#ffffff0|o|m|e|t|e|x|t| @66
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|X+1#0000000&|s|c|r|o|l@1|b|u|f@1|e|r| |[|+|]| @39|1|,|1| @11|A|l@1
+> +0&&@74
+|~+0#4040ff13&| @73
+|~| @73
+|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1
+|-+0&&@1|N|o| |l|i|n|e|s| |i|n| |b|u|f@1|e|r|-@1| @52
diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim
index 982a045..62eaa20 100644
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -1,10 +1,10 @@
 " Test for channel functions.
 
-if !has('channel')
-  throw 'Skipped: channel feature missing'
-endif
+source check.vim
+CheckFeature channel
 
 source shared.vim
+source screendump.vim
 
 let s:python = PythonProg()
 if s:python == ''
@@ -1125,6 +1125,35 @@
   endtry
 endfunc
 
+func Test_write_to_buffer_and_scroll()
+  CheckFeature job
+  if !CanRunVimInTerminal()
+    throw 'Skipped: cannot make screendumps'
+  endif
+  let lines =<< trim END
+      new Xscrollbuffer
+      call setline(1, range(1, 200))
+      $
+      redraw
+      wincmd w
+      call deletebufline('Xscrollbuffer', 1, '$')
+      if has('win32')
+	let cmd = ['cmd', '/c', 'echo sometext']
+      else
+	let cmd = [&shell, &shellcmdflag, 'echo sometext']
+      endif
+      call job_start(cmd, #{out_io: 'buffer', out_name: 'Xscrollbuffer'})
+  END
+  call writefile(lines, 'XtestBufferScroll')
+  let buf = RunVimInTerminal('-S XtestBufferScroll', #{rows: 10})
+  sleep 500m
+  call VerifyScreenDump(buf, 'Test_job_buffer_scroll_1', {})
+
+  " clean up
+  call StopVimInTerminal(buf)
+  call delete('XtestBufferScroll')
+endfunc
+
 func Test_pipe_null()
   if !has('job')
     return
@@ -1804,9 +1833,8 @@
 endfunc
 
 func Test_job_start_windows()
-  if !has('job') || !has('win32')
-    return
-  endif
+  CheckFeature job
+  CheckMSWindows
 
   " Check that backslash in $COMSPEC is handled properly.
   let g:echostr = ''
@@ -1820,9 +1848,7 @@
 endfunc
 
 func Test_env()
-  if !has('job')
-    return
-  endif
+  CheckFeature job
 
   let g:envstr = ''
   if has('win32')
@@ -1837,9 +1863,7 @@
 endfunc
 
 func Test_cwd()
-  if !has('job')
-    return
-  endif
+  CheckFeature job
 
   let g:envstr = ''
   if has('win32')
@@ -1901,9 +1925,7 @@
 endfunc
 
 func Test_list_args()
-  if !has('job')
-    return
-  endif
+  CheckFeature job
 
   call s:test_list_args('import sys;sys.stdout.write("hello world")', "hello world", 0)
   call s:test_list_args('import sys;sys.stdout.write("hello\nworld")', "hello\nworld", 0)
@@ -1956,9 +1978,8 @@
 endfunc
 
 func Test_job_start_in_timer()
-  if !has('job') || !has('timers')
-    return
-  endif
+  CheckFeature job
+  CheckFeature timers
 
   func OutCb(chan, msg)
     let g:val += 1
@@ -2017,9 +2038,8 @@
 endfunc
 
 func Test_no_hang_windows()
-  if !has('job') || !has('win32')
-    return
-  endif
+  CheckFeature job
+  CheckMSWindows
 
   try
     let job = job_start(s:python . " test_channel_pipe.py busy",
@@ -2055,9 +2075,8 @@
 endfunc
 
 func Test_job_tty_in_out()
-  if !has('job') || !has('unix')
-    return
-  endif
+  CheckFeature job
+  CheckUnix
 
   call writefile(['test'], 'Xtestin')
   let in_opts = [{},
diff --git a/src/version.c b/src/version.c
index 1043275..5b02511 100644
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1776,
+/**/
     1775,
 /**/
     1774,
