diff --git a/src/charset.c b/src/charset.c
index e9745c0..53d2a60 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -1178,28 +1178,50 @@
     added = 0;
     if ((*p_sbr != NUL || wp->w_p_bri) && wp->w_p_wrap && col != 0)
     {
-	numberextra = win_col_off(wp);
+	colnr_T sbrlen = 0;
+	int	numberwidth = win_col_off(wp);
+
+	numberextra = numberwidth;
 	col += numberextra + mb_added;
 	if (col >= (colnr_T)W_WIDTH(wp))
 	{
 	    col -= W_WIDTH(wp);
 	    numberextra = W_WIDTH(wp) - (numberextra - win_col_off2(wp));
-	    if (numberextra > 0)
+	    if (col >= numberextra && numberextra > 0)
 		col %= numberextra;
 	    if (*p_sbr != NUL)
 	    {
-		colnr_T sbrlen = (colnr_T)MB_CHARLEN(p_sbr);
+		sbrlen = (colnr_T)MB_CHARLEN(p_sbr);
 		if (col >= sbrlen)
 		    col -= sbrlen;
 	    }
-	    if (numberextra > 0)
+	    if (col >= numberextra && numberextra > 0)
 		col = col % numberextra;
+	    else if (col > 0 && numberextra > 0)
+		col += numberwidth - win_col_off2(wp);
+
+	    numberwidth -= win_col_off2(wp);
 	}
-	if (col == 0 || col + size > (colnr_T)W_WIDTH(wp))
+	if (col == 0 || col + size + sbrlen > (colnr_T)W_WIDTH(wp))
 	{
 	    added = 0;
 	    if (*p_sbr != NUL)
-		added += vim_strsize(p_sbr);
+	    {
+		if (size + sbrlen + numberwidth > (colnr_T)W_WIDTH(wp))
+		{
+		    /* calculate effective window width */
+		    int width = (colnr_T)W_WIDTH(wp) - sbrlen - numberwidth;
+		    int prev_width = col ? ((colnr_T)W_WIDTH(wp) - (sbrlen + col)) : 0;
+		    if (width == 0)
+			width = (colnr_T)W_WIDTH(wp);
+		    added += ((size - prev_width) / width) * vim_strsize(p_sbr);
+		    if ((size - prev_width) % width)
+			/* wrapped, add another length of 'sbr' */
+			added += vim_strsize(p_sbr);
+		}
+		else
+		    added += vim_strsize(p_sbr);
+	    }
 	    if (wp->w_p_bri)
 		added += get_breakindent_win(wp, line);
 
diff --git a/src/screen.c b/src/screen.c
index bbf57b1..b767ec3 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2842,6 +2842,9 @@
     unsigned	off;			/* offset in ScreenLines/ScreenAttrs */
     int		c = 0;			/* init for GCC */
     long	vcol = 0;		/* virtual column (for tabs) */
+#ifdef FEAT_LINEBREAK
+    long	vcol_sbr = -1;		/* virtual column after showbreak */
+#endif
     long	vcol_prev = -1;		/* "vcol" of previous character */
     char_u	*line;			/* current line */
     char_u	*ptr;			/* current position in "line" */
@@ -3759,6 +3762,7 @@
 		    n_extra = (int)STRLEN(p_sbr);
 		    char_attr = hl_attr(HLF_AT);
 		    need_showbreak = FALSE;
+		    vcol_sbr = vcol + MB_CHARLEN(p_sbr);
 		    /* Correct end of highlighted area for 'showbreak',
 		     * required when 'linebreak' is also set. */
 		    if (tocol == vcol)
@@ -4516,9 +4520,17 @@
 		if (c == TAB && (!wp->w_p_list || lcs_tab1))
 		{
 		    int tab_len = 0;
+		    long vcol_adjusted = vcol; /* removed showbreak length */
+#ifdef FEAT_LINEBREAK
+		    /* only adjust the tab_len, when at the first column
+		     * after the showbreak value was drawn */
+		    if (*p_sbr != NUL && vcol == vcol_sbr && wp->w_p_wrap)
+			vcol_adjusted = vcol - MB_CHARLEN(p_sbr);
+#endif
 		    /* tab amount depends on current column */
 		    tab_len = (int)wp->w_buffer->b_p_ts
-					- vcol % (int)wp->w_buffer->b_p_ts - 1;
+					- vcol_adjusted % (int)wp->w_buffer->b_p_ts - 1;
+
 #ifdef FEAT_LINEBREAK
 		    if (!wp->w_p_lbr || !wp->w_p_list)
 #endif
diff --git a/src/version.c b/src/version.c
index 7a54fc2..e6ab37e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    579,
+/**/
     578,
 /**/
     577,
