diff --git a/System/Path/Directory.hs b/System/Path/Directory.hs
--- a/System/Path/Directory.hs
+++ b/System/Path/Directory.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE CPP, OverloadedStrings #-}
 -- | This module provides type-safe access to directory manipulations.
 --
 --   It is designed to be imported instead of "System.Directory".
@@ -71,15 +71,20 @@
 import Control.Applicative
 import Control.Arrow
 import Data.List
+import Data.Time
 import GHC.Exts(IsString(..))
 import System.Directory (Permissions)
 import qualified System.Directory as SD
 import System.IO hiding (FilePath)
 import System.IO.Error
-import System.Time
 import Test.QuickCheck
 import Text.Printf
 
+-- directory < 1.2 used old-time; to present a consistent API we convert it
+-- time:Data.Time.UTCTime.
+#if !(MIN_VERSION_directory(1,2,0))
+import System.Time
+#endif
 
 ------------------------------------------------------------------------
 -- Actions on directories
@@ -203,8 +208,23 @@
 ------------------------------------------------------------------------
 -- Timestamps
 
-getModificationTime :: AbsRelClass ar => Path ar fd -> IO ClockTime
+getModificationTime :: AbsRelClass ar => Path ar fd -> IO UTCTime
+#if MIN_VERSION_directory(1,2,0)
 getModificationTime p = SD.getModificationTime (getPathString p)
+#else
+-- directory < 1.2 used the old-time package, convert to UTCTime
+getModificationTime p = convertTime <$> SD.getModificationTime (getPathString p)
+  where
+    convertTime clock = UTCTime day (fromIntegral sec)
+      where
+        calendar = toUTCTime clock
+        day = addDays (toInteger (ctYDay calendar)) yearStart
+        yearStart = fromGregorian (toInteger (ctYear calendar)) 1 1
+        hour = ctHour calendar
+        min = hour * 60 + ctMin calendar
+        sec = min * 60 + ctSec calendar
+#endif
+
 
 
 ------------------------------------------------------------------------
diff --git a/System/Path/IO.hs b/System/Path/IO.hs
--- a/System/Path/IO.hs
+++ b/System/Path/IO.hs
@@ -104,7 +104,6 @@
                                  withBinaryFile, openBinaryFile, openTempFile, openBinaryTempFile)
 import qualified System.IO as SIO
 import System.IO.Error
-import System.Time
 import Test.QuickCheck
 import Text.Printf
 
diff --git a/Test.hs b/Test.hs
--- a/Test.hs
+++ b/Test.hs
@@ -25,7 +25,7 @@
 
   writeFile testModule $ unlines $ templateHead ++ outLines ++ templateTail
 
-  let args = ["-e","TestModule.main",testModule]
+  let args = ["-optP-include", "-optPdist/build/autogen/cabal_macros.h", "-e","TestModule.main",testModule]
       ghc = "ghc"
       stdinput = ""
 
diff --git a/pathtype.cabal b/pathtype.cabal
--- a/pathtype.cabal
+++ b/pathtype.cabal
@@ -1,5 +1,5 @@
 Name:                pathtype
-Version:             0.5.2
+Version:             0.5.3
 Synopsis:            Type-safe replacement for System.FilePath etc
 Description:         This package provides type-safe access to filepath manipulations.
 		     .
@@ -78,7 +78,7 @@
 License:             BSD3
 Category:            System
 License-file:        LICENSE
-Author:              Ben Moseley
+Author:              Ben Moseley, Ben Millwood
 Maintainer:          ben@moseley.name
 HomePage:            http://code.haskell.org/pathtype
 Build-Type:          Simple
@@ -89,8 +89,18 @@
   type:     darcs
   location: http://code.haskell.org/pathtype
 
+flag old-time
+  description: Build with directory < 1.2 and old-time
+  default:     True
+
 Library
-  Build-Depends:     base >= 4 && < 5, directory >= 1 && < 2, old-time >= 1.0 && < 2, QuickCheck >= 2.1.0.1 && < 3
+  Build-Depends:     base >= 4 && < 5, time >= 1.0 && < 2, QuickCheck >= 2.1.0.1 && < 3
+
+  if flag(old-time)
+    Build-Depends: directory >= 1 && < 1.2, old-time >= 1.0 && < 2
+  else
+    Build-Depends: directory >= 1.2 && < 2
+
   Exposed-modules:
     System.Path, System.Path.Directory, System.Path.IO, System.Path.Posix, System.Path.Windows
   Extensions:        EmptyDataDecls, PatternGuards, FlexibleInstances, Rank2Types, OverloadedStrings, CPP
