diff --git a/numhask-hedgehog.cabal b/numhask-hedgehog.cabal
--- a/numhask-hedgehog.cabal
+++ b/numhask-hedgehog.cabal
@@ -1,5 +1,5 @@
 name: numhask-hedgehog
-version: 0.3.1
+version: 0.3.2
 synopsis:
   Laws and tests for numhask
 description:
@@ -48,7 +48,7 @@
   build-depends:
       base >=4.7 && <5
     , hedgehog >=0.5 && <1.1
-    , numhask >=0.3 && <0.4
+    , numhask >=0.3 && <0.5
     , numhask-space >=0.2.0 && <0.4
     , numhask-prelude >=0.3 && <0.4
   exposed-modules:
@@ -73,7 +73,7 @@
   build-depends:
       base >=4.7 && <5
     , hedgehog >=0.5 && <1.1
-    , numhask >=0.3 && <0.4
+    , numhask >=0.3 && <0.5
     , numhask-prelude >=0.3 && <0.4
     , numhask-hedgehog >=0.3 && <0.4
   default-language: Haskell2010
diff --git a/src/NumHask/Hedgehog/Gen.hs b/src/NumHask/Hedgehog/Gen.hs
--- a/src/NumHask/Hedgehog/Gen.hs
+++ b/src/NumHask/Hedgehog/Gen.hs
@@ -87,7 +87,6 @@
   ( Field a
   , ToRatio a Integer
   , FromRatio a Integer
-  , Subtractive a
   , MonadGen m)
   => m a
 negUniform = rational (Range.constantFrom zero (negate one) one)
@@ -114,7 +113,4 @@
 
 -- | a pair
 genPair :: (Monad m) => m a -> m (Pair a)
-genPair g = do
-  a <- g
-  b <- g
-  pure (Pair a b)
+genPair g = Pair <$> g <*> g
diff --git a/src/NumHask/Hedgehog/Prop.hs b/src/NumHask/Hedgehog/Prop.hs
--- a/src/NumHask/Hedgehog/Prop.hs
+++ b/src/NumHask/Hedgehog/Prop.hs
@@ -169,12 +169,13 @@
         a == (a % (a # b))
   assert (p rv rv')
 
-isIntegral :: (Eq a, Show a, Integral a) => Gen a -> Property
+isIntegral :: (Eq a, Show a, Integral a, Bounded a, Subtractive a) => Gen a -> Property
 isIntegral src = property $ do
   rv <- forAll src
   rv' <- forAll src
   let p = \a b ->
         b == zero ||
+        ((a == minBound && b == negate one) || (a == negate one && b == minBound)) ||
         b * (a `div` b) + (a `mod` b) == a
   assert (p rv rv')
 
@@ -283,7 +284,7 @@
            False -> (round a :: Integer) == ceiling (a - (one / (one + one))))
   assert (p rv)
   where
-    (~<) a b = joinLeq b a && not (a == b)
+    (~<) a b = joinLeq b a && (a /= b)
     (~<=) = flip joinLeq
 
 -- > sqrt . (**(one+one)) == id
@@ -294,13 +295,13 @@
   rv <- forAll src
   rv' <- forAll src
   let p = \a b ->
-        (not (a > (zero :: a))
+        ((a <= (zero :: a))
          || ((sqrt . (** (one + one)) $ a) == a)
          && (((** (one + one)) . sqrt $ a) == a)) &&
-        (not (a > (zero :: a))
+        ((a <= (zero :: a))
          || ((log . exp $ a) == a)
          && ((exp . log $ a) == a)) &&
-        (not (normL1 b > (zero :: a))
+        ((normL1 b <= (zero :: a))
          || not (nearZero (a - zero))
          || (a == one)
          || (a == zero && nearZero (logBase a b))
diff --git a/src/NumHask/Hedgehog/Props.hs b/src/NumHask/Hedgehog/Props.hs
--- a/src/NumHask/Hedgehog/Props.hs
+++ b/src/NumHask/Hedgehog/Props.hs
@@ -47,7 +47,6 @@
   ( Show a
   , Distributive a
   , Subtractive a
-  , Integral a
   , Signed a
   , Normed a a
   , Metric a a
@@ -62,7 +61,6 @@
   , isMultiplicative
   , \x -> [("distributive", isDistributive zero (+) (*) x)]
   , \x -> [("absorbative zero", isAbsorbativeUnit zero (*) x)]
-  , \x -> [("integral", isIntegral x)]
   , \x -> [("signed", isSigned x)]
   , \x -> [("normed", isNormedUnbounded x)]
   , \x -> [("metric", isMetricUnbounded x)]
@@ -72,7 +70,6 @@
   :: forall a.
   ( Show a
   , Distributive a
-  , Integral a
   , Signed a
   , Normed a a
   , JoinSemiLattice a
@@ -85,7 +82,6 @@
   , isMultiplicative
   , \x -> [("distributive", isDistributive zero (+) (*) x)]
   , \x -> [("absorbative zero", isAbsorbativeUnit zero (*) x)]
-  , \x -> [("integral", isIntegral x)]
   , \x -> [("signed", isSigned x)]
   , \x -> [("normed", isNormedUnbounded x)]
   ]
