diff --git a/src/globals.h b/src/globals.h
index 6bfc13d..29a643b 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -688,6 +688,7 @@
 						   DBCS encoding */
 EXTERN int	enc_unicode INIT(= 0);	/* 2: UCS-2 or UTF-16, 4: UCS-4 */
 EXTERN int	enc_utf8 INIT(= FALSE);		/* UTF-8 encoded Unicode */
+EXTERN int	enc_latin1like INIT(= TRUE);	/* 'encoding' is latin1 comp. */
 # ifdef WIN3264
 /* Codepage nr of 'encoding'.  Negative means it's not been set yet, zero
  * means 'encoding' is not a valid codepage. */
diff --git a/src/ops.c b/src/ops.c
index 8be36e8..b1b22a4 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2140,12 +2140,9 @@
     pos_T		pos;
 #ifdef FEAT_VISUAL
     struct block_def	bd;
-    int			done;
 #endif
+    int			todo;
     int			did_change = 0;
-#ifdef FEAT_MBYTE
-    colnr_T		col;
-#endif
 
     if (u_save((linenr_T)(oap->start.lnum - 1),
 				       (linenr_T)(oap->end.lnum + 1)) == FAIL)
@@ -2159,19 +2156,15 @@
 	{
 	    block_prep(oap, &bd, pos.lnum, FALSE);
 	    pos.col = bd.textcol;
-	    for (done = 0; done < bd.textlen; ++done)
+	    for (todo = bd.textlen; todo > 0; --todo)
 	    {
+#ifdef FEAT_MBYTE
+		if (has_mbyte)
+		    todo -= (*mb_ptr2len)(ml_get_pos(&pos)) - 1;
+#endif
 		did_change |= swapchar(oap->op_type, &pos);
-# ifdef FEAT_MBYTE
-		col = pos.col + 1;
-# endif
 		if (inc(&pos) == -1)	    /* at end of file */
 		    break;
-# ifdef FEAT_MBYTE
-		if (pos.col > col)
-		    /* Count extra bytes of a multi-byte character. */
-		    done += pos.col - col;
-# endif
 	    }
 # ifdef FEAT_NETBEANS_INTG
 	    if (usingNetbeans && did_change)
@@ -2202,8 +2195,12 @@
 	else if (!oap->inclusive)
 	    dec(&(oap->end));
 
-	while (ltoreq(pos, oap->end))
+	for (todo = oap->end.col - pos.col + 1; todo > 0; --todo)
 	{
+#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;
@@ -2282,6 +2279,19 @@
 	return FALSE;
 
 #ifdef FEAT_MBYTE
+    if (op_type == OP_UPPER && enc_latin1like && c == 0xdf)
+    {
+	pos_T   sp = curwin->w_cursor;
+
+	/* Special handling of German sharp s: change to "SS". */
+	curwin->w_cursor = *pos;
+	del_char(FALSE);
+	ins_char('S');
+	ins_char('S');
+	curwin->w_cursor = sp;
+	inc(pos);
+    }
+
     if (enc_dbcs != 0 && c >= 0x100)	/* No lower/uppercase letter */
 	return FALSE;
 #endif
diff --git a/src/version.h b/src/version.h
index 7e4ca14..8c6465e 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 Aug 23)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 23, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 24)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 24, compiled "
