diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -36,7 +36,13 @@
 		added PCA
 		added ICA
 
-0.2.0.7
+0.2.0.7:
 		removed hard-coded sigmoid from ICA algorithm internals
 		was not using seed passed to ica
 		minor fixes to remove warnings
+
+0.2.0.8:
+
+		error in decorrelation fixed
+
+0.2.0.9:
diff --git a/hstatistics.cabal b/hstatistics.cabal
--- a/hstatistics.cabal
+++ b/hstatistics.cabal
@@ -1,5 +1,5 @@
 Name:               hstatistics
-Version:            0.2.0.7
+Version:            0.2.0.8
 License:            GPL
 License-file:       LICENSE
 Copyright:          (c) A.V.H. McPhail 2010
@@ -23,7 +23,7 @@
 
     Build-Depends:      base >= 3 && < 5,
                         array, random,
-                        hmatrix >= 0.10.0, hmatrix-gsl-stats >= 0.1.1.5
+                        hmatrix >= 0.10.0, hmatrix-gsl-stats >= 0.1.2.1
 
     Extensions:         
 
diff --git a/lib/Numeric/Statistics/ICA.hs b/lib/Numeric/Statistics/ICA.hs
--- a/lib/Numeric/Statistics/ICA.hs
+++ b/lib/Numeric/Statistics/ICA.hs
@@ -141,9 +141,9 @@
 decorrelate :: Matrix Double -> Matrix Double
 decorrelate w = let w' = w / (scalar $ sqrt $ pnorm PNorm2 (w <> trans w))
                 in decorrelate' w w'
-    where decorrelate' w w' 
-              | converged 0.000001 w w' = w'
-              | otherwise               = decorrelate' w' ((scale 1.5 w') - (scale 0.5 (w <> trans w <> w)))
+    where decorrelate' m m' 
+              | converged 0.000001 m m' = m'
+              | otherwise               = decorrelate' m' ((scale 1.5 m') - (scale 0.5 (m' <> trans m' <> m')))
 {- don't know how to do svd of non-square matrices
 decorrelate m = let (u,d,v) = svd m
                 in u <> (diag (d ** (-0.5))) <> trans v <> m
