diff --git a/contrib/HighOrderMeshOptimizer/OptHomFastCurving.cpp b/contrib/HighOrderMeshOptimizer/OptHomFastCurving.cpp
index 2a56ba6eb169663543a56a12d4f169ce0af1a68e..58b9df9bc2c6627cc8268f23ae4f9c281548a390 100644
--- a/contrib/HighOrderMeshOptimizer/OptHomFastCurving.cpp
+++ b/contrib/HighOrderMeshOptimizer/OptHomFastCurving.cpp
@@ -410,7 +410,7 @@ inline void insertIfCurved(MElement *el, std::list<MElement*> &bndEl)
     SPoint3 xyzS(0.,0.,0.);
     for (int iSF = 0; iSF < nV1; ++iSF) xyzS += xyz1[iSF]*f[iSF];                     // Compute location of node in straight element
     const SVector3 vec(xyzS, el->getVertex(iV)->point());
-    const double normalDisp = dot(vec, normal);                                       // Normal component of displacement
+    const double normalDisp = fabs(dot(vec, normal));                                 // Normal component of displacement
     if (normalDisp > normalDispCurved) {
       bndEl.push_back(el);
       break;