diff --git a/src/move.c b/src/move.c
index 4b823ba..2ef7a9c 100644
--- a/src/move.c
+++ b/src/move.c
@@ -470,19 +470,29 @@
     return FALSE;
 }
 
+/*
+ * Update w_curswant.
+ */
+    void
+update_curswant_force(void)
+{
+    validate_virtcol();
+    curwin->w_curswant = curwin->w_virtcol
+#ifdef FEAT_PROP_POPUP
+	- curwin->w_virtcol_first_char
+#endif
+	;
+    curwin->w_set_curswant = FALSE;
+}
+
+/*
+ * Update w_curswant if w_set_curswant is set.
+ */
     void
 update_curswant(void)
 {
     if (curwin->w_set_curswant)
-    {
-	validate_virtcol();
-	curwin->w_curswant = curwin->w_virtcol
-#ifdef FEAT_PROP_POPUP
-				- curwin->w_virtcol_first_char
-#endif
-				;
-	curwin->w_set_curswant = FALSE;
-    }
+	update_curswant_force();
 }
 
 /*
diff --git a/src/normal.c b/src/normal.c
index 8351685..35f7610 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -5491,9 +5491,8 @@
 	    {
 		if (resel_VIsual_line_count <= 1)
 		{
-		    validate_virtcol();
-		    curwin->w_curswant = curwin->w_virtcol
-					+ resel_VIsual_vcol * cap->count0 - 1;
+		    update_curswant_force();
+		    curwin->w_curswant += resel_VIsual_vcol * cap->count0 - 1;
 		}
 		else
 		    curwin->w_curswant = resel_VIsual_vcol;
@@ -5506,9 +5505,8 @@
 	    }
 	    else if (VIsual_mode == Ctrl_V)
 	    {
-		validate_virtcol();
-		curwin->w_curswant = curwin->w_virtcol
-					+ resel_VIsual_vcol * cap->count0 - 1;
+		update_curswant_force();
+		curwin->w_curswant += + resel_VIsual_vcol * cap->count0 - 1;
 		coladvance(curwin->w_curswant);
 	    }
 	    else
@@ -5735,13 +5733,19 @@
     cap->oap->inclusive = FALSE;
     if (curwin->w_p_wrap && curwin->w_width != 0)
     {
-	int		width1 = curwin->w_width - curwin_col_off();
-	int		width2 = width1 + curwin_col_off2();
+	int	width1 = curwin->w_width - curwin_col_off();
+	int	width2 = width1 + curwin_col_off2();
+	int	virtcol;
 
 	validate_virtcol();
+	virtcol = curwin->w_virtcol
+#ifdef FEAT_PROP_POPUP
+	    - curwin->w_virtcol_first_char
+#endif
+	    ;
 	i = 0;
-	if (curwin->w_virtcol >= (colnr_T)width1 && width2 > 0)
-	    i = (curwin->w_virtcol - width1) / width2 * width2 + width1;
+	if (virtcol >= (colnr_T)width1 && width2 > 0)
+	    i = (virtcol - width1) / width2 * width2 + width1;
     }
     else
 	i = curwin->w_leftcol;
@@ -5815,24 +5819,32 @@
 	{
 	    int		width1 = curwin->w_width - col_off;
 	    int		width2 = width1 + curwin_col_off2();
+	    int		virtcol;
 
 	    validate_virtcol();
+	    virtcol = curwin->w_virtcol
+#ifdef FEAT_PROP_POPUP
+		- curwin->w_virtcol_first_char
+#endif
+		;
 	    i = width1 - 1;
-	    if (curwin->w_virtcol >= (colnr_T)width1)
-		i += ((curwin->w_virtcol - width1) / width2 + 1)
+	    if (virtcol >= (colnr_T)width1)
+		i += ((virtcol - width1) / width2 + 1)
 		    * width2;
 	    coladvance((colnr_T)i);
 
 	    // Make sure we stick in this column.
-	    validate_virtcol();
-	    curwin->w_curswant = curwin->w_virtcol;
-	    curwin->w_set_curswant = FALSE;
+	    update_curswant_force();
 	    if (curwin->w_cursor.col > 0 && curwin->w_p_wrap)
 	    {
 		// Check for landing on a character that got split at
 		// the end of the line.  We do not want to advance to
 		// the next screen line.
-		if (curwin->w_virtcol > (colnr_T)i)
+		if (curwin->w_virtcol
+#ifdef FEAT_PROP_POPUP
+			- curwin->w_virtcol_first_char
+#endif
+						> (colnr_T)i)
 		    --curwin->w_cursor.col;
 	    }
 	}
@@ -5860,9 +5872,7 @@
 	}
 
 	// Make sure we stick in this column.
-	validate_virtcol();
-	curwin->w_curswant = curwin->w_virtcol;
-	curwin->w_set_curswant = FALSE;
+	update_curswant_force();
     }
 }
 
diff --git a/src/proto/move.pro b/src/proto/move.pro
index f9787d6..de8bf51 100644
--- a/src/proto/move.pro
+++ b/src/proto/move.pro
@@ -2,6 +2,7 @@
 void redraw_for_cursorline(win_T *wp);
 void update_topline_redraw(void);
 void update_topline(void);
+void update_curswant_force(void);
 void update_curswant(void);
 void check_cursor_moved(win_T *wp);
 void changed_window_setting(void);
diff --git a/src/testdir/dumps/Test_prop_with_text_above_1a.dump b/src/testdir/dumps/Test_prop_with_text_above_1a.dump
new file mode 100644
index 0000000..c56d88f
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_with_text_above_1a.dump
@@ -0,0 +1,9 @@
+|f+0&#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| @42
+|s+0&#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| @41
+|o+0&#ffffff0|n|e| |t|w>o| @52
+|t|h|r|e@1| |f|o|u|r| @49
+@3|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| @43
+|f+0&#ffffff0|i|v|e| |s|i|x| @51
+|~+0#4040ff13&| @58
+|~| @58
+| +0#0000000&@41|1|,|7|-|1|2|7| @6|A|l@1| 
diff --git a/src/testdir/dumps/Test_prop_with_text_above_1b.dump b/src/testdir/dumps/Test_prop_with_text_above_1b.dump
new file mode 100644
index 0000000..d2d9c7b
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_with_text_above_1b.dump
@@ -0,0 +1,9 @@
+|f+0&#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| @42
+|s+0&#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| @41
+>o+0&#ffffff0|n|e| |t|w|o| @52
+|t|h|r|e@1| |f|o|u|r| @49
+@3|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| @43
+|f+0&#ffffff0|i|v|e| |s|i|x| @51
+|~+0#4040ff13&| @58
+|~| @58
+| +0#0000000&@41|1|,|1|-|1|2|1| @6|A|l@1| 
diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim
index d45409e..259ff9c 100644
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -2869,6 +2869,11 @@
   let buf = RunVimInTerminal('-S XscriptPropsWithTextAbove', #{rows: 9, cols: 60})
   call VerifyScreenDump(buf, 'Test_prop_with_text_above_1', {})
 
+  call term_sendkeys(buf, "ggg$")
+  call VerifyScreenDump(buf, 'Test_prop_with_text_above_1a', {})
+  call term_sendkeys(buf, "g0")
+  call VerifyScreenDump(buf, 'Test_prop_with_text_above_1b', {})
+
   call term_sendkeys(buf, "ggI")
   call VerifyScreenDump(buf, 'Test_prop_with_text_above_2', {})
   call term_sendkeys(buf, "inserted \<Esc>")
diff --git a/src/version.c b/src/version.c
index 8f6988b..19f9e00 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    482,
+/**/
     481,
 /**/
     480,
