diff -r 57e8b75298d6 src/hashtab.c
--- a/src/hashtab.c	Tue Oct 23 05:35:34 2012 +0200
+++ b/src/hashtab.c	Sun Nov 04 09:12:53 2012 +0100
@@ -138,7 +138,7 @@
     hash_T	perturb;
     hashitem_T	*freeitem;
     hashitem_T	*hi;
-    int		idx;
+    unsigned	idx;
 
 #ifdef HT_DEBUG
     ++hash_count_lookup;
@@ -150,7 +150,7 @@
      * - skip over a removed item
      * - return if the item matches
      */
-    idx = (int)(hash & ht->ht_mask);
+    idx = (unsigned)(hash & ht->ht_mask);
     hi = &ht->ht_array[idx];
 
     if (hi->hi_key == NULL)
@@ -176,7 +176,7 @@
 #ifdef HT_DEBUG
 	++hash_count_perturb;	    /* count a "miss" for hashtab lookup */
 #endif
-	idx = (int)((idx << 2) + idx + perturb + 1);
+	idx = (unsigned)((idx << 2U) + idx + perturb + 1U);
 	hi = &ht->ht_array[idx & ht->ht_mask];
 	if (hi->hi_key == NULL)
 	    return freeitem == NULL ? hi : freeitem;
diff -r 57e8b75298d6 src/misc2.c
--- a/src/misc2.c	Tue Oct 23 05:35:34 2012 +0200
+++ b/src/misc2.c	Sun Nov 04 09:12:53 2012 +0100
@@ -3860,7 +3860,7 @@
     ush temp; \
  \
     temp = (ush)keys[2] | 2; \
-    t = (int)(((unsigned)(temp * (temp ^ 1)) >> 8) & 0xff); \
+    t = (int)(((unsigned)(temp * (temp ^ 1U)) >> 8) & 0xff); \
 }
 
 /*
@@ -4002,7 +4002,7 @@
 	    ush temp;
 
 	    temp = (ush)keys[2] | 2;
-	    temp = (int)(((unsigned)(temp * (temp ^ 1)) >> 8) & 0xff);
+	    temp = (int)(((unsigned)(temp * (temp ^ 1U)) >> 8) & 0xff);
 	    UPDATE_KEYS_ZIP(*p ^= temp);
 	}
     else
