Don’t use ceil() for integer arithmetics.
diff --git a/lib/zip_algorithm_deflate.c b/lib/zip_algorithm_deflate.c
index c108e43..f9bce32 100644
--- a/lib/zip_algorithm_deflate.c
+++ b/lib/zip_algorithm_deflate.c
@@ -34,7 +34,6 @@
 #include "zipint.h"
 
 #include <limits.h>
-#include <math.h>
 #include <stdlib.h>
 #include <zlib.h>
 
@@ -50,7 +49,7 @@
 static zip_uint64_t maximum_compressed_size(zip_uint64_t uncompressed_size) {
     /* max deflate size increase: size + ceil(size/16k)*5+6 */
 
-    zip_uint64_t compressed_size = uncompressed_size + (zip_uint64_t)ceil((double)uncompressed_size/(16*1024) * 5) + 6;
+    zip_uint64_t compressed_size = (uncompressed_size + 16383) / 16384 * 5 + 6;
 
     if (compressed_size < uncompressed_size) {
         return ZIP_UINT64_MAX;