diff --git a/src/builtin.cmod b/src/builtin.cmod
index 6fe4c49fe7dce845d11b7e5b0659edd15ec0ca92..130bbc7187b89c76464012e6f9e6152312413174 100644
--- a/src/builtin.cmod
+++ b/src/builtin.cmod
@@ -102,7 +102,7 @@ PIKEFUN mapping(1:2) mkmapping(array(1=mixed) a, array(2=mixed) b)
   RETURN mkmapping(a,b);
 }
 
-PIKEFUN ptrdiff_t string_count(string haystack, string needle)
+PIKEFUN int string_count(string haystack, string needle)
   errname String.count;
   optflags OPT_TRY_OPTIMIZE;
 {
@@ -131,7 +131,7 @@ PIKEFUN ptrdiff_t string_count(string haystack, string needle)
        }
        break;
    }
-   RETURN c;
+   RETURN DO_NOT_WARN((INT_TYPE)c);
 }
 
 PIKEFUN int program_implements(program p, program p2)