diff --git a/bitvec.cabal b/bitvec.cabal
--- a/bitvec.cabal
+++ b/bitvec.cabal
@@ -1,5 +1,5 @@
 name: bitvec
-version: 0.2.0.0
+version: 0.2.0.1
 cabal-version: >=1.10
 build-type: Simple
 license: PublicDomain
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+# 0.2.0.1
+
+* Fix 'Read' instance.
+
 # 0.2.0.0
 
 * Remove hand-written 'Num', 'Real', 'Integral', 'Bits' instances.
diff --git a/src/Data/Bit/Internal.hs b/src/Data/Bit/Internal.hs
--- a/src/Data/Bit/Internal.hs
+++ b/src/Data/Bit/Internal.hs
@@ -31,8 +31,9 @@
     showsPrec _ (Bit True ) = showString "1"
 
 instance Read Bit where
+    readsPrec p (' ':rest) = readsPrec p rest
     readsPrec _ ('0':rest) = [(Bit False, rest)]
-    readsPrec _ ('1':rest) = [(Bit False, rest)]
+    readsPrec _ ('1':rest) = [(Bit True, rest)]
     readsPrec _ _ = []
 
 -- various internal utility functions and constants
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -1,15 +1,26 @@
 #!/usr/bin/env runhaskell
 module Main where
 
-import Test.Framework (defaultMain)
-
-import Tests.SetOps (setOpTests)
+import Data.Bit
+import Data.Proxy
+import Test.Framework (Test, defaultMain, testGroup)
+import Test.Framework.Providers.QuickCheck2 (testProperty)
+import Test.QuickCheck.Classes
 import Tests.MVector (mvectorTests)
+import Tests.SetOps (setOpTests)
 import Tests.Vector (vectorTests)
 
 main :: IO ()
 main = defaultMain
-    [ mvectorTests
+    [ showReadTests
+    , mvectorTests
     , setOpTests
     , vectorTests
     ]
+
+showReadTests :: Test
+showReadTests
+  = testGroup "Show/Read"
+  $ map (uncurry testProperty)
+  $ lawsProperties
+  $ showReadLaws (Proxy :: Proxy Bit)
