diff --git a/fluents/lib/engines.py b/fluents/lib/engines.py
index fc3e002..821dc2b 100644
--- a/fluents/lib/engines.py
+++ b/fluents/lib/engines.py
@@ -17,8 +17,16 @@ def pca(a, aopt, scale='scores', mode='normal'):
     """
     
     m, n = a.shape
-    u, s, vt = svd(a, full_matrices=0)
-    eigvals = (1./m)*s
+
+    if m*10.>n:
+        v, s, ut = dot(a.T, a)
+        s = sqrt(s)
+        eigvals = s
+        u = u.T
+        vt = v.T
+    else:
+        u, s, vt = svd(a, full_matrices=0)
+        eigvals = (1./m)*s
     T = u*s
     T = T[:,:aopt]
     P = vt[:aopt,:].T