diff --git a/mongoose.c b/mongoose.c
index 6e7c35a7f887f045bc3a1ebeabef7901b9d0b12b..4988cdc19f8c50dfd9fd6f2da1ba18ca0bf035e7 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -3327,8 +3327,8 @@ static void handle_put(struct connection *conn, const char *path) {
 
 static void forward_put_data(struct connection *conn) {
   struct iobuf *io = &conn->ns_conn->recv_iobuf;
-  int n = conn->cl < io->len ? conn->cl : io->len;  // How many bytes to write
-  n = write(conn->endpoint.fd, io->buf, n);         // Write them!
+  size_t k = conn->cl < (int64_t) io->len ? conn->cl : io->len;   // To write
+  int n = write(conn->endpoint.fd, io->buf, k);   // Write them!
   if (n > 0) {
     iobuf_remove(io, n);
     conn->cl -= n;
@@ -4108,7 +4108,7 @@ static void process_response(struct connection *conn) {
   if (conn->request_len < 0 ||
       (conn->request_len == 0 && io->len > MAX_REQUEST_SIZE)) {
     call_http_client_handler(conn);
-  } else if (io->len >= conn->cl) {
+  } else if ((int64_t) io->len >= conn->cl) {
     call_http_client_handler(conn);
   }
 }