diff --git a/7.3.426 b/7.3.426
new file mode 100644
index 0000000..76380af
--- /dev/null
+++ b/7.3.426
@@ -0,0 +1,279 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.426
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.426
+Problem:    With '$' in 'cpoptions' the $ is not displayed in the first
+            column.
+Solution:   Use -1 instead of 0 as a special value. (Hideki Eiraku and
+            Hirohito Higashi)
+Files:      src/edit.c, src/globals.h, src/move.c, src/screen.c, src/search.c 
+    
+
+*** ../vim-7.3.425/src/edit.c	2012-01-26 18:58:25.000000000 +0100
+--- src/edit.c	2012-02-04 23:23:45.000000000 +0100
+***************
+*** 1763,1771 ****
+      static void
+  undisplay_dollar()
+  {
+!     if (dollar_vcol)
+      {
+! 	dollar_vcol = 0;
+  	redrawWinline(curwin->w_cursor.lnum, FALSE);
+      }
+  }
+--- 1763,1771 ----
+      static void
+  undisplay_dollar()
+  {
+!     if (dollar_vcol >= 0)
+      {
+! 	dollar_vcol = -1;
+  	redrawWinline(curwin->w_cursor.lnum, FALSE);
+      }
+  }
+***************
+*** 5441,5447 ****
+  				compl_curr_match->cp_number);
+  		edit_submode_extra = match_ref;
+  		edit_submode_highl = HLF_R;
+! 		if (dollar_vcol)
+  		    curs_columns(FALSE);
+  	    }
+  	}
+--- 5441,5447 ----
+  				compl_curr_match->cp_number);
+  		edit_submode_extra = match_ref;
+  		edit_submode_highl = HLF_R;
+! 		if (dollar_vcol >= 0)
+  		    curs_columns(FALSE);
+  	    }
+  	}
+***************
+*** 8961,8967 ****
+       * We can emulate the vi behaviour by pretending there is a dollar
+       * displayed even when there isn't.
+       *  --pkv Sun Jan 19 01:56:40 EST 2003 */
+!     if (vim_strchr(p_cpo, CPO_BACKSPACE) != NULL && dollar_vcol == 0)
+  	dollar_vcol = curwin->w_virtcol;
+  
+  #ifdef FEAT_FOLDING
+--- 8961,8967 ----
+       * We can emulate the vi behaviour by pretending there is a dollar
+       * displayed even when there isn't.
+       *  --pkv Sun Jan 19 01:56:40 EST 2003 */
+!     if (vim_strchr(p_cpo, CPO_BACKSPACE) != NULL && dollar_vcol == -1)
+  	dollar_vcol = curwin->w_virtcol;
+  
+  #ifdef FEAT_FOLDING
+*** ../vim-7.3.425/src/globals.h	2011-05-10 16:41:13.000000000 +0200
+--- src/globals.h	2012-02-04 23:24:07.000000000 +0100
+***************
+*** 113,121 ****
+   * When '$' is included in 'cpoptions' option set:
+   * When a change command is given that deletes only part of a line, a dollar
+   * is put at the end of the changed text. dollar_vcol is set to the virtual
+!  * column of this '$'.
+   */
+! EXTERN colnr_T	dollar_vcol INIT(= 0);
+  
+  #ifdef FEAT_INS_EXPAND
+  /*
+--- 113,121 ----
+   * When '$' is included in 'cpoptions' option set:
+   * When a change command is given that deletes only part of a line, a dollar
+   * is put at the end of the changed text. dollar_vcol is set to the virtual
+!  * column of this '$'.  -1 is used to indicate no $ is being displayed.
+   */
+! EXTERN colnr_T	dollar_vcol INIT(= -1);
+  
+  #ifdef FEAT_INS_EXPAND
+  /*
+*** ../vim-7.3.425/src/move.c	2012-01-10 22:26:12.000000000 +0100
+--- src/move.c	2012-02-04 23:21:08.000000000 +0100
+***************
+*** 362,368 ****
+  #endif
+  	    )
+      {
+! 	dollar_vcol = 0;
+  	if (curwin->w_skipcol != 0)
+  	{
+  	    curwin->w_skipcol = 0;
+--- 362,368 ----
+  #endif
+  	    )
+      {
+! 	dollar_vcol = -1;
+  	if (curwin->w_skipcol != 0)
+  	{
+  	    curwin->w_skipcol = 0;
+***************
+*** 966,972 ****
+  
+      /* remove '$' from change command when cursor moves onto it */
+      if (startcol > dollar_vcol)
+! 	dollar_vcol = 0;
+  
+      extra = curwin_col_off();
+      curwin->w_wcol = curwin->w_virtcol + extra;
+--- 966,972 ----
+  
+      /* remove '$' from change command when cursor moves onto it */
+      if (startcol > dollar_vcol)
+! 	dollar_vcol = -1;
+  
+      extra = curwin_col_off();
+      curwin->w_wcol = curwin->w_virtcol + extra;
+*** ../vim-7.3.425/src/screen.c	2012-01-10 22:26:12.000000000 +0100
+--- src/screen.c	2012-02-04 23:22:44.000000000 +0100
+***************
+*** 1637,1647 ****
+  	     * When at start of changed lines: May scroll following lines
+  	     * up or down to minimize redrawing.
+  	     * Don't do this when the change continues until the end.
+! 	     * Don't scroll when dollar_vcol is non-zero, keep the "$".
+  	     */
+  	    if (lnum == mod_top
+  		    && mod_bot != MAXLNUM
+! 		    && !(dollar_vcol != 0 && mod_bot == mod_top + 1))
+  	    {
+  		int		old_rows = 0;
+  		int		new_rows = 0;
+--- 1637,1647 ----
+  	     * When at start of changed lines: May scroll following lines
+  	     * up or down to minimize redrawing.
+  	     * Don't do this when the change continues until the end.
+! 	     * Don't scroll when dollar_vcol >= 0, keep the "$".
+  	     */
+  	    if (lnum == mod_top
+  		    && mod_bot != MAXLNUM
+! 		    && !(dollar_vcol >= 0 && mod_bot == mod_top + 1))
+  	    {
+  		int		old_rows = 0;
+  		int		new_rows = 0;
+***************
+*** 1868,1879 ****
+  	    if (row > wp->w_height)	/* past end of screen */
+  	    {
+  		/* we may need the size of that too long line later on */
+! 		if (dollar_vcol == 0)
+  		    wp->w_lines[idx].wl_size = plines_win(wp, lnum, TRUE);
+  		++idx;
+  		break;
+  	    }
+! 	    if (dollar_vcol == 0)
+  		wp->w_lines[idx].wl_size = row - srow;
+  	    ++idx;
+  #ifdef FEAT_FOLDING
+--- 1868,1879 ----
+  	    if (row > wp->w_height)	/* past end of screen */
+  	    {
+  		/* we may need the size of that too long line later on */
+! 		if (dollar_vcol == -1)
+  		    wp->w_lines[idx].wl_size = plines_win(wp, lnum, TRUE);
+  		++idx;
+  		break;
+  	    }
+! 	    if (dollar_vcol == -1)
+  		wp->w_lines[idx].wl_size = row - srow;
+  	    ++idx;
+  #ifdef FEAT_FOLDING
+***************
+*** 1990,1996 ****
+  	    }
+  #endif
+  	}
+! 	else if (dollar_vcol == 0)
+  	    wp->w_botline = lnum;
+  
+  	/* make sure the rest of the screen is blank */
+--- 1990,1996 ----
+  	    }
+  #endif
+  	}
+! 	else if (dollar_vcol == -1)
+  	    wp->w_botline = lnum;
+  
+  	/* make sure the rest of the screen is blank */
+***************
+*** 2005,2011 ****
+      wp->w_old_botfill = wp->w_botfill;
+  #endif
+  
+!     if (dollar_vcol == 0)
+      {
+  	/*
+  	 * There is a trick with w_botline.  If we invalidate it on each
+--- 2005,2011 ----
+      wp->w_old_botfill = wp->w_botfill;
+  #endif
+  
+!     if (dollar_vcol == -1)
+      {
+  	/*
+  	 * There is a trick with w_botline.  If we invalidate it on each
+***************
+*** 3564,3570 ****
+  	}
+  
+  	/* When still displaying '$' of change command, stop at cursor */
+! 	if (dollar_vcol != 0 && wp == curwin
+  		   && lnum == wp->w_cursor.lnum && vcol >= (long)wp->w_virtcol
+  #ifdef FEAT_DIFF
+  				   && filler_todo <= 0
+--- 3564,3570 ----
+  	}
+  
+  	/* When still displaying '$' of change command, stop at cursor */
+! 	if (dollar_vcol >= 0 && wp == curwin
+  		   && lnum == wp->w_cursor.lnum && vcol >= (long)wp->w_virtcol
+  #ifdef FEAT_DIFF
+  				   && filler_todo <= 0
+*** ../vim-7.3.425/src/search.c	2012-01-26 20:58:21.000000000 +0100
+--- src/search.c	2012-02-04 23:23:10.000000000 +0100
+***************
+*** 2501,2508 ****
+  	    save_siso = p_siso;
+  	    /* Handle "$" in 'cpo': If the ')' is typed on top of the "$",
+  	     * stop displaying the "$". */
+! 	    if (dollar_vcol > 0 && dollar_vcol == curwin->w_virtcol)
+! 		dollar_vcol = 0;
+  	    ++curwin->w_virtcol;	/* do display ')' just before "$" */
+  	    update_screen(VALID);	/* show the new char first */
+  
+--- 2501,2508 ----
+  	    save_siso = p_siso;
+  	    /* Handle "$" in 'cpo': If the ')' is typed on top of the "$",
+  	     * stop displaying the "$". */
+! 	    if (dollar_vcol >= 0 && dollar_vcol == curwin->w_virtcol)
+! 		dollar_vcol = -1;
+  	    ++curwin->w_virtcol;	/* do display ')' just before "$" */
+  	    update_screen(VALID);	/* show the new char first */
+  
+*** ../vim-7.3.425/src/version.c	2012-02-04 22:44:27.000000000 +0100
+--- src/version.c	2012-02-04 23:32:55.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     426,
+  /**/
+
+
+-- 
+I am also told that there is a logical proof out there somewhere
+that demonstrates that there is no task which duct tape cannot handle.
+					-- Paul Brannan
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///