diff --git a/src/narrowphase/narrowphase.cpp b/src/narrowphase/narrowphase.cpp
index c1088f3b550e36d994cf451032306a4addd5eec6..9e0852171f362df97d322d49abe80f78eceef121 100644
--- a/src/narrowphase/narrowphase.cpp
+++ b/src/narrowphase/narrowphase.cpp
@@ -1637,7 +1637,7 @@ bool capsuleHalfspaceIntersect(const Capsule& s1, const Transform3f& tf1,
   Vec3f dir_z = R.getColumn(2);
 
   FCL_REAL cosa = dir_z.dot(new_s2.n);
-  if(cosa < halfspaceIntersectTolerance<FCL_REAL>())
+  if(std::abs(cosa) < halfspaceIntersectTolerance<FCL_REAL>())
   {
     FCL_REAL signed_dist = new_s2.signedDistance(T);
     FCL_REAL depth = s1.radius - signed_dist;