diff --git a/ChasingBottoms.cabal b/ChasingBottoms.cabal
--- a/ChasingBottoms.cabal
+++ b/ChasingBottoms.cabal
@@ -1,5 +1,5 @@
 name:               ChasingBottoms
-version:            1.3.0.14
+version:            1.3.1
 license:            MIT
 license-file:       LICENCE
 copyright:          Copyright (c) Nils Anders Danielsson 2004-2016.
diff --git a/Test/ChasingBottoms/IsBottom.hs b/Test/ChasingBottoms/IsBottom.hs
--- a/Test/ChasingBottoms/IsBottom.hs
+++ b/Test/ChasingBottoms/IsBottom.hs
@@ -15,9 +15,11 @@
 
 module Test.ChasingBottoms.IsBottom
   ( isBottom
+  , isBottomIO
   , bottom
   , nonBottomError
   , isBottomTimeOut
+  , isBottomTimeOutIO
   ) where
 
 import Prelude hiding (catch)
@@ -97,7 +99,18 @@
 -- below.
 {-# NOINLINE isBottomTimeOut #-}
 isBottomTimeOut :: Maybe Int -> a -> Bool
-isBottomTimeOut timeOutLimit f = unsafePerformIO $
+isBottomTimeOut timeOutLimit f =
+  unsafePerformIO $ isBottomTimeOutIO timeOutLimit f
+
+-- | A variant of 'isBottom' that lives in the 'IO' monad.
+
+isBottomIO :: a -> IO Bool
+isBottomIO = isBottomTimeOutIO Nothing
+
+-- | A variant of 'isBottomTimeOut' that lives in the 'IO' monad.
+
+isBottomTimeOutIO :: Maybe Int -> a -> IO Bool
+isBottomTimeOutIO timeOutLimit f =
   maybeTimeOut (E.evaluate f) `E.catches`
     [ E.Handler (\(_ :: E.ArrayException)   -> return True)
     , E.Handler (\(_ :: E.ErrorCall)        -> return True)
