diff --git a/modules/geom/src/vecmat3_op.cc b/modules/geom/src/vecmat3_op.cc
index 7fb8e2feff5aded2ce280c74e8d9f893465c9b77..0ce26dde3f1684710265b3c0cc1c79f69ee8bf01 100644
--- a/modules/geom/src/vecmat3_op.cc
+++ b/modules/geom/src/vecmat3_op.cc
@@ -142,16 +142,16 @@ Mat3 EulerTransformation(Real theta, Real phi, Real xi)
 }
 
 Vec3 OrthogonalVector(const Vec3& vec) {
-  if (vec[0] < vec[1]) {
-    if (vec[0] < vec[2])
+  if (std::abs(vec[0]) < std::abs(vec[1])) {
+    if (std::abs(vec[0]) < std::abs(vec[2]))
       return Normalize(Cross(vec, Vec3(1, 0, 0)+vec));
     else
       return Normalize(Cross(vec, Vec3(0, 0, 1)+vec));
   } else {
-    if (vec[1] < vec[2]) 
+    if (std::abs(vec[1]) < std::abs(vec[2]))
       return Normalize(Cross(vec, Vec3(0, 1, 0)+vec));
     else
-      return Normalize(Cross(vec, Vec3(0, 0, 2)+vec));     
+      return Normalize(Cross(vec, Vec3(0, 0, 1)+vec));
   }
 }