diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,9 @@
 Revision history for Haskell package learning-hmm
 ===
 
+## Version 0.3.1.3
+- Bug fix release
+
 ## Version 0.3.1.2
 - Default the limit of Baum-Welch iteration to 10000 (in `baumWelch'`)
 
diff --git a/learning-hmm.cabal b/learning-hmm.cabal
--- a/learning-hmm.cabal
+++ b/learning-hmm.cabal
@@ -1,5 +1,5 @@
 name:                learning-hmm
-version:             0.3.1.2
+version:             0.3.1.3
 stability:           experimental
 
 synopsis:            Yet another library for hidden Markov models
diff --git a/src/Learning/HMM/Internal.hs b/src/Learning/HMM/Internal.hs
--- a/src/Learning/HMM/Internal.hs
+++ b/src/Learning/HMM/Internal.hs
@@ -21,7 +21,7 @@
 import qualified Data.Map.Strict                  as M   ( findWithDefault )
 import           Data.Random.Distribution.Simplex        ( stdSimplex )
 import           Data.Random.RVar                        ( RVar )
-import qualified Data.Vector                      as V   ( Vector, filter, foldl1', map, unsafeFreeze, unsafeIndex, unsafeTail, zip, zipWith3 )
+import qualified Data.Vector                      as V   ( Vector, filter, foldl', foldl1', map, unsafeFreeze, unsafeIndex, unsafeTail, zip, zipWith3 )
 import qualified Data.Vector.Generic              as G   ( convert )
 import qualified Data.Vector.Generic.Extra        as G   ( frequencies )
 import qualified Data.Vector.Mutable              as MV  ( unsafeNew, unsafeRead, unsafeWrite )
@@ -175,7 +175,7 @@
                ns = ds H.#> H.konst 1 nStates -- numerators
            in H.diag (H.konst 1 nStates / ns) H.<> ds
     phi' = let gs' o = V.map snd $ V.filter ((== o) . fst) $ V.zip (G.convert xs) gammas
-               ds    = V.foldl1' (+) . gs'  -- denominators
+               ds    = V.foldl' (+) 0 . gs'  -- denominators
                ns    = V.foldl1' (+) gammas -- numerators
            in H.fromRows $ map (\o -> ds o / ns) [0..(nOutputs - 1)]
 
diff --git a/src/Learning/IOHMM/Internal.hs b/src/Learning/IOHMM/Internal.hs
--- a/src/Learning/IOHMM/Internal.hs
+++ b/src/Learning/IOHMM/Internal.hs
@@ -21,7 +21,7 @@
 import qualified Data.Map.Strict                  as M   ( findWithDefault )
 import           Data.Random.Distribution.Simplex        ( stdSimplex )
 import           Data.Random.RVar                        ( RVar )
-import qualified Data.Vector                      as V   ( Vector, filter, foldl1', generate, map, replicateM, unsafeFreeze, unsafeIndex , unsafeTail , zip, zipWith3 )
+import qualified Data.Vector                      as V   ( Vector, filter, foldl', foldl1', generate, map, replicateM, unsafeFreeze, unsafeIndex , unsafeTail , zip, zipWith3 )
 import qualified Data.Vector.Generic              as G   ( convert )
 import qualified Data.Vector.Generic.Extra        as G   ( frequencies )
 import qualified Data.Vector.Mutable              as MV  ( unsafeNew, unsafeRead, unsafeWrite )
@@ -184,7 +184,7 @@
                ns i   = ds i H.#> H.konst 1 nStates -- numerators
            in V.map (\i -> H.diag (H.konst 1 nStates / ns i) H.<> ds i) (V.generate nInputs id)
     phi' = let gs' o = V.map snd $ V.filter ((== o) . fst) $ V.zip (G.convert ys) gammas
-               ds    = V.foldl1' (+) . gs'  -- denominators
+               ds    = V.foldl' (+) 0 . gs'  -- denominators
                ns    = V.foldl1' (+) gammas -- numerators
            in H.fromRows $ map (\o -> ds o / ns) [0..(nOutputs - 1)]
 
