diff --git a/system/base/zip/files/zip-3.0-time.patch b/system/base/zip/files/zip-3.0-time.patch
new file mode 100644
index 00000000..f72fd16c
--- /dev/null
+++ b/system/base/zip/files/zip-3.0-time.patch
@@ -0,0 +1,11 @@
+--- zip-2.31/unix/Makefile.time 2007-02-07 09:36:30.000000000 +0100
++++ zip-2.31/unix/Makefile 2007-02-07 09:38:42.000000000 +0100
+@@ -24,7 +24,7 @@
+ E =
+
+ # probably can change this to 'install' if you have it
+-INSTALL_PROGRAM = cp
++INSTALL_PROGRAM = cp -p
+ # probably can change this to 'install -d' if you have it
+ # XXX NextStep 3.3 and Openstep 4.x don't know about -p !
+ INSTALL_D = mkdir -p
diff --git a/system/base/zip/files/zip-gnu89-build.patch b/system/base/zip/files/zip-gnu89-build.patch
new file mode 100644
index 00000000..65ee7a76
--- /dev/null
+++ b/system/base/zip/files/zip-gnu89-build.patch
@@ -0,0 +1,15 @@
+zip uses C89-only features, so it needs to be built in C89 mode.
+
+diff --git a/unix/Makefile b/unix/Makefile
+index 86cf54bf0f56cea9..244390893eab5fc6 100644
+--- a/unix/Makefile
++++ b/unix/Makefile
+@@ -202,7 +202,7 @@ generic: flags
+ eval $(MAKE) $(MAKEF) zips `cat flags`
+
+ generic_gcc:
+- $(MAKE) $(MAKEF) generic CC=gcc CPP="gcc -E"
++ $(MAKE) $(MAKEF) generic CC="gcc -std=gnu89" CPP="gcc -E"
+
+ # AT&T 6300 PLUS (don't know yet how to allocate 64K bytes):
+ att6300nodir:
diff --git a/system/base/zip/pspec.xml b/system/base/zip/pspec.xml
index 9dd823d5..8d5eb5f9 100644
--- a/system/base/zip/pspec.xml
+++ b/system/base/zip/pspec.xml
@@ -18,6 +18,8 @@
zip-3.0-exec-shield.patch
zip-3.0-format-security.patch
zipnote.patch
+ zip-3.0-time.patch
+ zip-gnu89-build.patch