cmake: improve definitions of integer minimum values

Reported by Eun-cheol Joo.
diff --git a/THANKS b/THANKS
index f741529..e3f78c2 100644
--- a/THANKS
+++ b/THANKS
@@ -20,6 +20,7 @@
 David Demelier <demelier.david@gmail.com>
 Del Merritt <del@alum.mit.edu>
 Dmytro Rybachenko <atmoliton@gmail.com>
+Eun-cheol Joo
 François Simon <AT.GFI.Francois.SIMON@sesam-vitale.fr>
 Frederik Ramm <frederik@remote.org>
 Hanno Böck <hanno@hboeck.de>
diff --git a/cmake-zipconf.h.in b/cmake-zipconf.h.in
index 17edc6c..6a276f6 100644
--- a/cmake-zipconf.h.in
+++ b/cmake-zipconf.h.in
@@ -102,15 +102,15 @@
 typedef unsigned long long zip_uint64_t;
 #endif
 
-#define ZIP_INT8_MIN	-0x80
+#define ZIP_INT8_MIN	 (-ZIP_INT8_MAX-1)
 #define ZIP_INT8_MAX	 0x7f
 #define ZIP_UINT8_MAX	 0xff
 
-#define ZIP_INT16_MIN	-0x8000
+#define ZIP_INT16_MIN	 (-ZIP_INT16_MAX-1)
 #define ZIP_INT16_MAX	 0x7fff
 #define ZIP_UINT16_MAX	 0xffff
 
-#define ZIP_INT32_MIN	-0x80000000L
+#define ZIP_INT32_MIN	 (-ZIP_INT32_MAX-1L)
 #define ZIP_INT32_MAX	 0x7fffffffL
 #define ZIP_UINT32_MAX	 0xffffffffLU