diff --git a/Storage/Hashed/Index.hs b/Storage/Hashed/Index.hs
--- a/Storage/Hashed/Index.hs
+++ b/Storage/Hashed/Index.hs
@@ -62,6 +62,7 @@
 import Control.Exception.Extensible
 import Control.Applicative( (<$>) )
 
+import qualified Data.ByteString.Lazy as BL
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Char8 as BSC
 import Data.ByteString.Unsafe( unsafeHead, unsafeDrop )
@@ -111,6 +112,8 @@
 off_hash = off_dsclen + size_dsclen
 off_dsc = off_hash + size_hash
 
+emptyDirHash = sha256 BL.empty
+
 itemAllocSize :: AnchoredPath -> Int
 itemAllocSize apath =
     align 4 $ size_hash + size_size + size_aux + size_dsclen + 2 + BS.length (flatten apath)
@@ -361,6 +364,7 @@
                         let path'' = path' `appendPath` name
                         noff <- subs xs
                         create x path'' noff
+                  when (null $ listImmediate s) $ updateItem i 0 emptyDirHash
                   lastOff <- subs (listImmediate s)
                   xlatePoke64 (iAux i) (fromIntegral lastOff)
                   return lastOff
diff --git a/hashed-storage.cabal b/hashed-storage.cabal
--- a/hashed-storage.cabal
+++ b/hashed-storage.cabal
@@ -1,5 +1,5 @@
 name:          hashed-storage
-version:       0.4.3
+version:       0.4.4
 synopsis:      Hashed file storage support code.
 
 description:   Support code for reading and manipulating hashed file storage
