diff --git a/src/globals.h b/src/globals.h
index 568d3b3..fee2951 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1742,3 +1742,7 @@
 // Skip win_fix_cursor() call for 'nosplitscroll' when cmdwin is closed.
 EXTERN int skip_win_fix_cursor INIT(= FALSE);
 #endif
+// Skip win_fix_scroll() call for 'nosplitscroll' when closing tab page.
+EXTERN int skip_win_fix_scroll INIT(= FALSE);
+// Skip update_topline() call while executing win_fix_scroll().
+EXTERN int skip_update_topline INIT(= FALSE);
diff --git a/src/move.c b/src/move.c
index 2ef7a9c..a51d2d1 100644
--- a/src/move.c
+++ b/src/move.c
@@ -991,7 +991,7 @@
     /*
      * First make sure that w_topline is valid (after moving the cursor).
      */
-    if (p_spsc)
+    if (!skip_update_topline)
 	update_topline();
 
     /*
diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim
index e044404..21e9906 100644
--- a/src/testdir/test_window_cmd.vim
+++ b/src/testdir/test_window_cmd.vim
@@ -1631,10 +1631,11 @@
   set laststatus&
 endfunc
 
-" Ensure no scrolling happens with 'nosplitscroll' with and without a
-" winbar, tabline, for each possible value of 'laststatus', 'scrolloff',
+" Ensure no scrolling happens with 'nosplitscroll' for a sequence of
+" split operations for various options: with and without a winbar,
+" tabline, for each possible value of 'laststatus', 'scrolloff',
 " 'equalalways', and regardless of the cursor position.
-func Test_splitscroll_with_splits()
+func Test_nosplitscroll_options()
   set nowrap
   set nosplitscroll
 
@@ -1648,7 +1649,7 @@
     tabnew | tabonly! | redraw    
     let tabline = (gui ? 0 : ((run % 5) ? 1 : 0))
     let winbar_sb = (run % 2) && (run % 3)
-    execute 'set scrolloff=' . !(run % 3) ? 0 : run
+    execute 'set scrolloff=' . (!(run % 4) ? 0 : run)
     execute 'set laststatus=' . (run % 3)
     execute 'set ' . ((run % 2) ? 'equalalways' : 'noequalalways')
     execute 'set ' . ((run % 3) ? 'splitbelow' : 'nosplitbelow')
@@ -1790,31 +1791,28 @@
   set splitscroll&
 endfunction
 
-" No scroll when aucmd_win is opened.
-function Test_nosplitscroll_aucmdwin()
+function Test_nosplitscroll_misc()
   set nosplitscroll
+  set splitbelow
 
   call setline(1, range(1, &lines))
   norm Gzz
   let top = line('w0')
+  " No scroll when aucmd_win is opened
   call setbufvar(bufnr("test", 1) , '&buftype', 'nofile')
   call assert_equal(top, line('w0'))
-
-  %bwipeout!
-  set splitscroll&
-endfunc
-
-" No scroll when help is closed and buffer line count < window height.
-function Test_nosplitscroll_helpwin()
-  set nosplitscroll
-  set splitbelow
-
-  call setline(1, range(&lines - 10))
+  " No scroll when tab is changed/closed
+  tab help | close
+  call assert_equal(top, line('w0'))
+  " No scroll when help is closed and buffer line count < window height
+  norm ggdG
+  call setline(1, range(1, &lines - 10))
   norm G
   let top = line('w0')
   help | quit
   call assert_equal(top, line('w0'))
 
+  %bwipeout!
   set splitbelow&
   set splitscroll&
 endfunc
diff --git a/src/version.c b/src/version.c
index a8e0151..9de0676 100644
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    505,
+/**/
     504,
 /**/
     503,
diff --git a/src/window.c b/src/window.c
index 3ed3f5a..3e1a3ef 100644
--- a/src/window.c
+++ b/src/window.c
@@ -4478,6 +4478,7 @@
     // Don't repeat a message in another tab page.
     set_keep_msg(NULL, 0);
 
+    skip_win_fix_scroll = TRUE;
     if (tp != curtab && leave_tabpage(tp->tp_curwin->w_buffer,
 					trigger_leave_autocmds) == OK)
     {
@@ -4488,6 +4489,7 @@
 	    enter_tabpage(curtab, curbuf, trigger_enter_autocmds,
 		    trigger_leave_autocmds);
     }
+    skip_win_fix_scroll = FALSE;
 }
 
 /*
@@ -5481,7 +5483,7 @@
     compute_cmdrow();
     curtab->tp_ch_used = p_ch;
 
-    if (!p_spsc)
+    if (!p_spsc && !skip_win_fix_scroll)
 	win_fix_scroll(TRUE);
 
 #if 0
@@ -6362,10 +6364,10 @@
     win_T    *wp;
     linenr_T lnum;
 
+    skip_update_topline = TRUE;  // avoid scrolling in curs_rows()
     FOR_ALL_WINDOWS(wp)
     {
-	// Skip when window height has not changed or when
-	// buffer has less lines than the window height.
+	// Skip when window height has not changed.
 	if (wp->w_height != wp->w_prev_height)
 	{
 	    // Determine botline needed to avoid scrolling and set cursor.
@@ -6387,8 +6389,9 @@
 	wp->w_prev_height = wp->w_height;
 	wp->w_prev_winrow = wp->w_winrow;
     }
+    skip_update_topline = FALSE;
     // Ensure cursor is valid when not in normal mode or when resized.
-    if (!(get_real_state() & (MODE_NORMAL|MODE_CMDLINE)))
+    if (!(get_real_state() & (MODE_NORMAL|MODE_CMDLINE|MODE_TERMINAL)))
 	win_fix_cursor(FALSE);
     else if (resize)
 	win_fix_cursor(TRUE);
@@ -6435,11 +6438,8 @@
 	else
 	{   // Ensure cursor stays visible if we are not in normal mode.
 	    wp->w_fraction = 0.5 * FRACTION_MULT;
-	    // Make sure cursor is closer to topline than botline.
-	    if (so == wp->w_height / 2
-			  && nlnum - wp->w_topline > wp->w_botline - 1 - nlnum)
-		wp->w_fraction++;
 	    scroll_to_fraction(wp, wp->w_prev_height);
+	    validate_botline_win(curwin);
 	}
     }
 }
