Fix int truncation warning, fix format string.
diff --git a/lib/zip_source_file_win32.h b/lib/zip_source_file_win32.h
index 78c77ad..0a3027b 100644
--- a/lib/zip_source_file_win32.h
+++ b/lib/zip_source_file_win32.h
@@ -53,7 +53,7 @@
     BOOL (*delete_file)(const char *name);
     DWORD (*get_file_attributes)(const char *name);
     BOOL (*get_file_attributes_ex)(const char *name, GET_FILEEX_INFO_LEVELS info_level, void *information);
-    void (*make_tempname)(char *buf, size_t len, const char *name, int i);
+    void (*make_tempname)(char *buf, size_t len, const char *name, zip_uint32_t i);
     BOOL (*move_file)(const char *from, const char *to, DWORD flags);
     BOOL (*set_file_attributes)(const char *name, DWORD attributes);
     char *(*string_duplicate)(const char *string);
diff --git a/lib/zip_source_file_win32_ansi.c b/lib/zip_source_file_win32_ansi.c
index 0d2568c..19ceba6 100644
--- a/lib/zip_source_file_win32_ansi.c
+++ b/lib/zip_source_file_win32_ansi.c
@@ -76,6 +76,6 @@
 
 
 static void
-ansi_make_tempname(char *buf, size_t len, const char *name, int i) {
-    snprintf(buf, len, "%s.%d", name, i);
+ansi_make_tempname(char *buf, size_t len, const char *name, zip_uint32_t i) {
+    snprintf(buf, len, "%s.%08x", name, i);
 }
diff --git a/lib/zip_source_file_win32_utf16.c b/lib/zip_source_file_win32_utf16.c
index d5f13e1..b77ef43 100644
--- a/lib/zip_source_file_win32_utf16.c
+++ b/lib/zip_source_file_win32_utf16.c
@@ -121,7 +121,7 @@
 
 
 static void
-utf16_make_tempname(char *buf, size_t len, const char *name, int i) {
+utf16_make_tempname(char *buf, size_t len, const char *name, zip_uint32_t i) {
     _snwprintf((wchar_t *)buf, len, L"%s.%08x", (const wchar_t *)name, i);
 }
 
diff --git a/lib/zip_source_file_win32_write.c b/lib/zip_source_file_win32_write.c
index de68925..6636e34 100644
--- a/lib/zip_source_file_win32_write.c
+++ b/lib/zip_source_file_win32_write.c
@@ -96,8 +96,7 @@
 _zip_win32_write_op_create_temp_output(zip_source_file_context_t *ctx) {
     zip_source_file_win32_write_operations_t *write_ops = (zip_source_file_win32_write_operations_t *)ctx->ops_userdata;
 
-    int value;
-    int i;
+    zip_uint32_t value, i;
     HANDLE th = INVALID_HANDLE_VALUE;
     void *temp = NULL;
     PSECURITY_DESCRIPTOR psd = NULL;
@@ -123,7 +122,7 @@
  #ifndef MS_UWP
     value = GetTickCount();
 #else
-    value = GetTickCount64();
+    value = (zip_uint32_t)(GetTickCount64() & 0xffffffff);
 #endif
     
     if ((tempname = write_ops->allocate_tempname(ctx->fname, 10, &tempname_size)) == NULL) {