Don’t seek before start.

This code path is not hit on windows, because we always know the size of the file.
diff --git a/lib/zip_source_filep.c b/lib/zip_source_filep.c
index ea58aa8..9b38811 100644
--- a/lib/zip_source_filep.c
+++ b/lib/zip_source_filep.c
@@ -537,7 +537,12 @@
 		    zip_error_set(&ctx->error, ZIP_ER_SEEK, errno);
 		    return -1;
 		}
-		new_current -= (zip_int64_t)ctx->start;
+		if (new_current < (zip_int64_t)ctx->start) {
+                    new_current = 0;
+                }
+                else {
+                    new_current -= (zip_int64_t)ctx->start;
+                }
 		need_seek = 0;
 	    }
 	    else {
diff --git a/lib/zip_source_win32handle.c b/lib/zip_source_win32handle.c
index ff375c1..256d997 100644
--- a/lib/zip_source_win32handle.c
+++ b/lib/zip_source_win32handle.c
@@ -359,7 +359,12 @@
 		    return -1;
 		}
 		new_current = new_offset.QuadPart;
-		new_current -= (zip_int64_t)ctx->start;
+                if (new_current < (zip_int64_t)ctx->start) {
+                    new_current = 0;
+                }
+                else {
+                    new_current -= (zip_int64_t)ctx->start;
+                }
 		need_seek = 0;
 	    }
 	    else {