Index: /branches/eam_branches/20091201/psLib/src/math/psMatrix.c
===================================================================
--- /branches/eam_branches/20091201/psLib/src/math/psMatrix.c	(revision 26646)
+++ /branches/eam_branches/20091201/psLib/src/math/psMatrix.c	(revision 26647)
@@ -1065,11 +1065,15 @@
     if (isfinite(thresh) && thresh > 0.0) {
         // Trim the singular values
-        thresh *= gsl_vector_get(S, 0);
-        psTrace("psLib.math", 8, "Singular value 0: %lf", gsl_vector_get(S, 0));
-        for (int i = 1; i < numCols; i++) {
+        double total = 0.0;             // Total of singular values
+        for (int i = 0; i < numCols; i++) {
+            total += gsl_vector_get(S, i);
+        }
+        thresh *= total;
+        for (int i = 0; i < numCols; i++) {
             double value = gsl_vector_get(S, i); // Singular value
             if (value < thresh) {
-                psTrace("psLib.math", 5, "Trimming singular value %d: %lf", i, value);
+                psTrace("psLib.math", 5, "Trimming singular value %d: %lg", i, value);
                 gsl_vector_set(S, i, 0.0);
+#if 0
                 for (int j = 0; j < numCols; j++) {
                     // Being thorough; probably unnecessary
@@ -1077,6 +1081,7 @@
                     gsl_matrix_set(A, j, i, 0.0);
                 }
+#endif
             } else {
-                psTrace("psLib.math", 5, "Singular value %d: %lf", i, value);
+                psTrace("psLib.math", 5, "Singular value %d: %lg", i, value);
             }
         }
