updated for version 7.0148
diff --git a/src/ops.c b/src/ops.c
index b1b22a4..dc0e52b 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2140,8 +2140,8 @@
     pos_T		pos;
 #ifdef FEAT_VISUAL
     struct block_def	bd;
-#endif
     int			todo;
+#endif
     int			did_change = 0;
 
     if (u_save((linenr_T)(oap->start.lnum - 1),
@@ -2158,10 +2158,10 @@
 	    pos.col = bd.textcol;
 	    for (todo = bd.textlen; todo > 0; --todo)
 	    {
-#ifdef FEAT_MBYTE
+# ifdef FEAT_MBYTE
 		if (has_mbyte)
 		    todo -= (*mb_ptr2len)(ml_get_pos(&pos)) - 1;
-#endif
+# endif
 		did_change |= swapchar(oap->op_type, &pos);
 		if (inc(&pos) == -1)	    /* at end of file */
 		    break;
@@ -2195,16 +2195,13 @@
 	else if (!oap->inclusive)
 	    dec(&(oap->end));
 
-	for (todo = oap->end.col - pos.col + 1; todo > 0; --todo)
+	while (ltoreq(pos, oap->end))
 	{
-#ifdef FEAT_MBYTE
-	    if (has_mbyte)
-		todo -= (*mb_ptr2len)(ml_get_pos(&pos)) - 1;
-#endif
 	    did_change |= swapchar(oap->op_type, &pos);
 	    if (inc(&pos) == -1)    /* at end of file */
 		break;
 	}
+
 	if (did_change)
 	{
 	    changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1,
diff --git a/src/screen.c b/src/screen.c
index 6e25471..f497f37 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2931,7 +2931,7 @@
 	    wp->w_cursor.lnum = lnum;
 	    wp->w_cursor.col = ptr - line;
 	    len = spell_move_to(wp, FORWARD, TRUE, TRUE, &spell_attr);
-	    if (len == 0 || wp->w_cursor.col > ptr - line)
+	    if (len == 0 || (int)wp->w_cursor.col > ptr - line)
 	    {
 		/* no bad word found at line start, don't check until end of a
 		 * word */
diff --git a/src/search.c b/src/search.c
index 456b694..2ed15df 100644
--- a/src/search.c
+++ b/src/search.c
@@ -1440,6 +1440,11 @@
 	/* For multi-byte re-use last bytes[] and bytelen. */
     }
 
+    if (dir == BACKWARD)
+	cap->oap->inclusive = FALSE;
+    else
+	cap->oap->inclusive = TRUE;
+
     p = ml_get_curline();
     col = curwin->w_cursor.col;
     len = (int)STRLEN(p);
diff --git a/src/testdir/test58.ok b/src/testdir/test58.ok
index 9fba6bc..736e992 100644
--- a/src/testdir/test58.ok
+++ b/src/testdir/test58.ok
@@ -34,7 +34,7 @@
 déôl
 ['deol', 'déôr', 'test']
 end
-['put', 'test', 'uk']
+['put', 'OK', 'test']
 the
 ['put', 'uk', 'test']
 gebletegek
@@ -75,7 +75,7 @@
 bad
 ['put', 'uk', 'OK']
 inputs
-['input', 'puts', 'put']
+['input', 'puts', 'outputs']
 comment
 ['Comment']
 ok
@@ -143,7 +143,7 @@
 pro
 ['bork', 'end', 'word']
 borkborkborkborkborkbork
-['borkbork borkborkborkbork', 'borkborkbork borkborkbork', 'borkborkborkborkbork bork']
+['bork borkborkborkborkbork', 'borkbork borkborkborkbork', 'borkborkbork borkborkbork']
 tomatotomatotomato
 ['tomato tomatotomato', 'tomatotomato tomato', 'tomato tomato tomato']
 endstart
@@ -153,13 +153,13 @@
 startstart
 ['start start']
 wordend
-['word end', 'wordword', 'word']
+['word end', 'word', 'wordword']
 wordstart
 ['word start', 'bork start']
 startwordwordwordwordend
 ['startwordwordwordword end', 'startwordwordwordword', 'start wordwordwordword end']
 borkpreborkpreborkbork
-['borkpreborkprebork bork', 'borkprebork preborkbork', 'bork preborkpreborkbork']
+['bork preborkpreborkbork', 'borkprebork preborkbork', 'borkpreborkprebork bork']
 
 test 5-5
 # file: Xtest.latin1.spl
@@ -211,7 +211,7 @@
 meea2
 ['meea1', 'meeaé', 'lead']
 prabar
-['prebar', 'leadbar', 'bar']
+['prebar', 'bar', 'leadbar']
 probarbirk
 ['prebarbork']
 middle
@@ -243,7 +243,7 @@
 meea2
 ['meea1', 'meeaé', 'lead']
 prabar
-['prebar', 'leadbar', 'bar']
+['prebar', 'bar', 'leadbar']
 probarmaat
 ['prebarmeat']
 middle
diff --git a/src/testdir/test59.ok b/src/testdir/test59.ok
index c37ecb8..8f47667 100644
--- a/src/testdir/test59.ok
+++ b/src/testdir/test59.ok
@@ -34,7 +34,7 @@
 déôl
 ['deol', 'déôr', 'test']
 end
-['put', 'test', 'uk']
+['put', 'OK', 'test']
 the
 ['put', 'uk', 'test']
 gebletegek
@@ -75,7 +75,7 @@
 bad
 ['put', 'uk', 'OK']
 inputs
-['input', 'puts', 'put']
+['input', 'puts', 'outputs']
 comment
 ['Comment']
 ok
@@ -143,7 +143,7 @@
 pro
 ['bork', 'end', 'word']
 borkborkborkborkborkbork
-['borkbork borkborkborkbork', 'borkborkbork borkborkbork', 'borkborkborkborkbork bork']
+['bork borkborkborkborkbork', 'borkbork borkborkborkbork', 'borkborkbork borkborkbork']
 tomatotomatotomato
 ['tomato tomatotomato', 'tomatotomato tomato', 'tomato tomato tomato']
 endstart
@@ -153,13 +153,13 @@
 startstart
 ['start start']
 wordend
-['word end', 'wordword', 'word']
+['word end', 'word', 'wordword']
 wordstart
 ['word start', 'bork start']
 startwordwordwordwordend
 ['startwordwordwordword end', 'startwordwordwordword', 'start wordwordwordword end']
 borkpreborkpreborkbork
-['borkpreborkprebork bork', 'borkprebork preborkbork', 'bork preborkpreborkbork']
+['bork preborkpreborkbork', 'borkprebork preborkbork', 'borkpreborkprebork bork']
 
 test 5-5
 # file: Xtest.utf-8.spl
@@ -211,7 +211,7 @@
 meea2
 ['meea1', 'meeaé', 'lead']
 prabar
-['prebar', 'leadbar', 'bar']
+['prebar', 'bar', 'leadbar']
 probarbirk
 ['prebarbork']
 middle
@@ -243,7 +243,7 @@
 meea2
 ['meea1', 'meeaé', 'lead']
 prabar
-['prebar', 'leadbar', 'bar']
+['prebar', 'bar', 'leadbar']
 probarmaat
 ['prebarmeat']
 middle
diff --git a/src/version.h b/src/version.h
index 9402b51..f4c9e71 100644
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 14)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 14, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 16)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 16, compiled "