diff --git a/System/Posix/StatVFS.hsc b/System/Posix/StatVFS.hsc
--- a/System/Posix/StatVFS.hsc
+++ b/System/Posix/StatVFS.hsc
@@ -3,6 +3,16 @@
 ##include "StatVFSConfig.h"
 #include "StatVFSConfig.h"
 #include "sys/statvfs.h"
+-- | Get information about a mounted filesystem.
+-- A minimal example of usage is:
+--
+-- @
+-- import System.Posix.StatVFS (statVFS, statVFS_bfree)
+--
+-- main = do
+--     stat <- statVFS "/"
+--     putStrLn $ (show (statVFS_bfree stat)) ++ " free blocks on /"
+-- @
 
 module System.Posix.StatVFS where
 
@@ -42,17 +52,28 @@
 
 foreign import capi unsafe "sys/statvfs.h statvfs"
   c_statvfs :: CString -> Ptr CStatVFS -> IO CInt
-
-data StatVFS = StatVFS { statVFS_bsize :: CULong
+-- | File system information record, reflects data mentioned in the statvfs(3) manual
+data StatVFS = StatVFS { -- | Filesystem block size
+                         statVFS_bsize :: CULong
+                         -- | Fragment size
                        , statVFS_frsize :: CULong
+                         -- | Size of fs in f_frsize units
                        , statVFS_blocks :: CFSBlkCnt
+                         -- | Free blocks
                        , statVFS_bfree :: CFSBlkCnt
+                         -- | Free blocks for unprivileged users
                        , statVFS_bavail :: CFSBlkCnt
+                         -- | Inodes
                        , statVFS_files :: CFSFilCnt
+                         -- | Free inodes
                        , statVFS_ffree :: CFSFilCnt
+                         -- | Free inodes for unprivileged users
                        , statVFS_favail :: CFSFilCnt
+                         -- | Filesystem ID
                        , statVFS_fsid :: CULong
+                         -- | Mount flags
                        , statVFS_flag :: CULong
+                         -- | Maximum filename length
                        , statVFS_namemax :: CULong
                        } deriving Show
 
diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -3522,7 +3522,7 @@
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -3568,7 +3568,7 @@
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -3592,7 +3592,7 @@
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -3637,7 +3637,7 @@
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -3661,7 +3661,7 @@
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
diff --git a/statvfs.cabal b/statvfs.cabal
--- a/statvfs.cabal
+++ b/statvfs.cabal
@@ -1,5 +1,5 @@
 name:           statvfs
-version:        0.1
+version:        0.2
 license:        BSD3
 license-file:   LICENSE
 maintainer:     gergely@risko.hu
