diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,9 @@
+zip-archive 0.3.0.7
+
+  * Fix check for unix file attributes (#34).
+    Previously attributes would not always be preserved
+    for files in zip archives.
+
 zip-archive 0.3.0.6
 
   * Bump bytestring lower bound so toStrict is guaranteed (Benjamin Landers).
diff --git a/src/Codec/Archive/Zip.hs b/src/Codec/Archive/Zip.hs
--- a/src/Codec/Archive/Zip.hs
+++ b/src/Codec/Archive/Zip.hs
@@ -318,7 +318,7 @@
           else E.throwIO $ CRC32Mismatch path
 #ifndef _WINDOWS
        let modes = fromIntegral $ shiftR (eExternalFileAttributes entry) 16
-       when (eVersionMadeBy entry == 0x0300 &&
+       when (eVersionMadeBy entry .&. 0xFF00 == 0x0300 &&
              modes /= 0) $ setFileMode path modes
 #endif
 
diff --git a/zip-archive.cabal b/zip-archive.cabal
--- a/zip-archive.cabal
+++ b/zip-archive.cabal
@@ -1,5 +1,5 @@
 Name:                zip-archive
-Version:             0.3.0.6
+Version:             0.3.0.7
 Cabal-Version:       >= 1.10
 Build-type:          Custom
 Synopsis:            Library for creating and modifying zip archives.
