diff --git a/scikits/learn/linear_model/lars.py b/scikits/learn/linear_model/lars.py
index bc9ed86653f0f8ded849addaf664453233406ff2..fc8cd1c034951bac4eca3b9267ed78a1ccc7b937 100644
--- a/scikits/learn/linear_model/lars.py
+++ b/scikits/learn/linear_model/lars.py
@@ -358,12 +358,12 @@ class LARS(LinearModel):
             X[:, nonzeros] /= norms[nonzeros]
 
         # precompute if n_samples > n_features
-        if precompute == True or \
-               (precompute == 'auto' and X.shape[0] > X.shape[1]):
-            Gram = np.dot(X.T, X)
-        elif hasattr(precompute, '__array__'):
+        if hasattr(precompute, '__array__'):
             # copy as it's going to be modified
             Gram = precompute.copy()
+        elif precompute == True or \
+               (precompute == 'auto' and X.shape[0] > X.shape[1]):
+            Gram = np.dot(X.T, X)
         else:
             Gram = None