diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,10 @@
+2022-12-21 Ivan Perez <ivan.perez@keera.co.uk>
+        * bearriver.cabal: Version bump (0.14) (#340).
+        * Bump version bounds for MonadRandom (#337).
+        * Adjust to work with simple-affine-space-0.2 (#339).
+        * src/BearRiver.hs: show sections in haddock (#322).
+        * Thanks: @geroldmeisinger.
+
 2022-10-21 Ivan Perez <ivan.perez@keera.co.uk>
         * bearriver.cabal: Version bump (0.13.7) (#335), update copyright
           owners, years (#332).
diff --git a/bearriver.cabal b/bearriver.cabal
--- a/bearriver.cabal
+++ b/bearriver.cabal
@@ -30,7 +30,7 @@
 build-type:    Simple
 
 name:          bearriver
-version:       0.13.7
+version:       0.14
 author:        Ivan Perez, Manuel Bärenz
 maintainer:    ivan.perez@keera.co.uk
 homepage:      https://github.com/ivanperez-keera/dunai
@@ -82,9 +82,9 @@
       base >= 4.6 && <5
     , deepseq             >= 1.3.0.0 && < 1.5
     , dunai >= 0.6.0 && < 0.10
-    , MonadRandom         >= 0.2   && < 0.6
+    , MonadRandom         >= 0.2   && < 0.7
     , mtl                 >= 2.1.2 && < 2.3
-    , simple-affine-space >= 0.1   && < 0.2
+    , simple-affine-space >= 0.1   && < 0.3
     , transformers >= 0.3 && < 0.7
 
   default-language:
@@ -92,6 +92,10 @@
 
   hs-source-dirs:
     src/
+
+  if impl(ghc <= 7.8.4)
+    build-depends:
+      MonadRandom >= 0.2 && < 0.6
 
   if !impl(ghc >= 8.0)
     build-depends:
diff --git a/src/FRP/BearRiver.hs b/src/FRP/BearRiver.hs
--- a/src/FRP/BearRiver.hs
+++ b/src/FRP/BearRiver.hs
@@ -8,6 +8,7 @@
 #else
 {-# OPTIONS_GHC -Wno-deprecations #-}
 #endif
+{-# OPTIONS_HADDOCK ignore-exports #-}
 -- Copyright  : (c) Ivan Perez, 2019-2022
 --              (c) Ivan Perez and Manuel Baerenz, 2016-2018
 -- License    : BSD3
@@ -712,24 +713,24 @@
 -- * Integration and differentiation
 
 -- | Integration using the rectangle rule.
-integral :: (Monad m, VectorSpace a s) => SF m a a
+integral :: (Monad m, Fractional s, VectorSpace a s) => SF m a a
 integral = integralFrom zeroVector
 
 
 -- | Integrate using an auxiliary function that takes the current and the last
 -- input, the time between those samples, and the last output, and returns a
 -- new output.
-integralFrom :: (Monad m, VectorSpace a s) => a -> SF m a a
+integralFrom :: (Monad m, Fractional s, VectorSpace a s) => a -> SF m a a
 integralFrom a0 = proc a -> do
   dt <- constM ask         -< ()
   accumulateWith (^+^) a0 -< realToFrac dt *^ a
 
 -- | A very crude version of a derivative. It simply divides the
 -- value difference by the time difference. Use at your own risk.
-derivative :: (Monad m, VectorSpace a s) => SF m a a
+derivative :: (Monad m, Fractional s, VectorSpace a s) => SF m a a
 derivative = derivativeFrom zeroVector
 
-derivativeFrom :: (Monad m, VectorSpace a s) => a -> SF m a a
+derivativeFrom :: (Monad m, Fractional s, VectorSpace a s) => a -> SF m a a
 derivativeFrom a0 = proc a -> do
   dt   <- constM ask   -< ()
   aOld <- MSF.iPre a0 -< a
