Add casts in gzwrite.c for pointer differences.
diff --git a/gzguts.h b/gzguts.h
index c22814d..d87659d 100644
--- a/gzguts.h
+++ b/gzguts.h
@@ -142,7 +142,8 @@
 #  define DEF_MEM_LEVEL  MAX_MEM_LEVEL
 #endif
 
-/* default i/o buffer size -- double this for output when reading */
+/* default i/o buffer size -- double this for output when reading (this and
+   twice this must be able to fit in an unsigned type) */
 #define GZBUFSIZE 8192
 
 /* gzip modes, also provide a little integrity check on the passed structure */
diff --git a/gzwrite.c b/gzwrite.c
index 3729a29..aa767fb 100644
--- a/gzwrite.c
+++ b/gzwrite.c
@@ -211,7 +211,7 @@
 
             if (strm->avail_in == 0)
                 strm->next_in = state->in;
-            have = strm->next_in + strm->avail_in - state->in;
+            have = (unsigned)((strm->next_in + strm->avail_in) - state->in);
             copy = state->size - have;
             if (copy > len)
                 copy = len;
@@ -273,7 +273,7 @@
     if (state->size) {
         if (strm->avail_in == 0)
             strm->next_in = state->in;
-        have = strm->next_in + strm->avail_in - state->in;
+        have = (unsigned)((strm->next_in + strm->avail_in) - state->in);
         if (have < state->size) {
             state->in[have] = c;
             strm->avail_in++;