diff --git a/src/System/Posix/IO/ByteString/Lazy.hs b/src/System/Posix/IO/ByteString/Lazy.hs
--- a/src/System/Posix/IO/ByteString/Lazy.hs
+++ b/src/System/Posix/IO/ByteString/Lazy.hs
@@ -46,10 +46,11 @@
     :: Fd
     -> ByteCount        -- ^ How many bytes to try to read.
     -> IO BL.ByteString -- ^ The bytes read.
-fdRead _  0 = return BL.empty
-fdRead fd n = do
-    s <- PosixBS.fdRead fd n
-    return (BLI.chunk s BL.empty)
+fdRead fd nbytes
+    | nbytes <= 0 = return BL.empty
+    | otherwise   = do
+        s <- PosixBS.fdRead fd nbytes
+        return (BLI.chunk s BL.empty)
 
 ----------------------------------------------------------------
 -- | Read data from a specified position in the 'Fd' and convert
@@ -64,10 +65,11 @@
     -> ByteCount        -- ^ How many bytes to try to read.
     -> FileOffset       -- ^ Where to read the data from.
     -> IO BL.ByteString -- ^ The bytes read.
-fdPread _  0 _      = return BL.empty
-fdPread fd n offset = do
-    s <- PosixBS.fdPread fd n offset
-    return (BLI.chunk s BL.empty)
+fdPread fd nbytes offset
+    | nbytes <= 0 = return BL.empty
+    | otherwise   = do
+        s <- PosixBS.fdPread fd nbytes offset
+        return (BLI.chunk s BL.empty)
 
 
 ----------------------------------------------------------------
diff --git a/unix-bytestring.cabal b/unix-bytestring.cabal
--- a/unix-bytestring.cabal
+++ b/unix-bytestring.cabal
@@ -3,7 +3,7 @@
 ----------------------------------------------------------------
 
 Name:           unix-bytestring
-Version:        0.3.3
+Version:        0.3.4
 -- Source-Repository requires version 1.6
 Cabal-Version:  >= 1.6
 -- We need a custom build in order to define __HADDOCK__
