diff --git a/src/System/PosixCompat/Files.hsc b/src/System/PosixCompat/Files.hsc
--- a/src/System/PosixCompat/Files.hsc
+++ b/src/System/PosixCompat/Files.hsc
@@ -179,12 +179,21 @@
 setFileCreationMask _ = return nullFileMode
 
 modeToPerms :: FileMode -> Permissions
+
+#ifdef DIRECTORY_1_0
+modeToPerms m = Permissions
+    { readable   = m .&. ownerReadMode    /= 0
+    , writable   = m .&. ownerWriteMode   /= 0
+    , executable = m .&. ownerExecuteMode /= 0
+    , searchable = m .&. ownerExecuteMode /= 0 }
+#else
 modeToPerms m =
     setOwnerReadable   (m .&. ownerReadMode    /= 0) $
     setOwnerWritable   (m .&. ownerWriteMode   /= 0) $
     setOwnerExecutable (m .&. ownerExecuteMode /= 0) $
     setOwnerSearchable (m .&. ownerExecuteMode /= 0) $
     emptyPermissions
+#endif
 
 -- -----------------------------------------------------------------------------
 -- access()
diff --git a/unix-compat.cabal b/unix-compat.cabal
--- a/unix-compat.cabal
+++ b/unix-compat.cabal
@@ -1,5 +1,5 @@
 name:           unix-compat
-version:        0.2.1
+version:        0.2.1.1
 synopsis:       Portable POSIX-compatibility layer.
 description:    This package provides portable implementations of parts
                 of the unix package. This package re-exports the unix 
@@ -38,8 +38,15 @@
   build-depends: base == 4.*
 
   if flag(portable) || os(windows)
-    build-depends: old-time == 1.0.*, directory == 1.1.*
+    build-depends: old-time == 1.0.*
     extensions: GeneralizedNewtypeDeriving
+
+    if impl(ghc < 7)
+      build-depends: directory == 1.0.*
+      cpp-options: -DDIRECTORY_1_0
+    else
+      build-depends: directory == 1.1.*
+
     if os(windows)
       cpp-options: -DMISSING_POSIX_TYPES
   else
