diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 2b865b4a8eff6a77c77edee8384c7229810c570d..f74c934b21fdaf0a0dd03d816fb6e0d0301eb03f 100755
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -166,7 +166,8 @@ void calc_tangent_from_triangle(
 
 	F32 rd = s1*t2-s2*t1;
 
-	float r = ((rd*rd) > FLT_EPSILON) ? 1.0F / rd : 1024.f; //some made up large ratio for division by zero
+	float r = ((rd*rd) > FLT_EPSILON) ? (1.0f / rd)
+											    : ((rd > 0.0f) ? 1024.f : -1024.f); //some made up large ratio for division by zero
 
 	llassert(llfinite(r));
 	llassert(!llisnan(r));
@@ -6789,7 +6790,8 @@ void CalculateTangentArray(U32 vertexCount, const LLVector4a *vertex, const LLVe
         
 		F32 rd = s1*t2-s2*t1;
 
-		float r = ((rd*rd) > FLT_EPSILON) ? 1.0F / rd : 1024.f; //some made up large ratio for division by zero
+		float r = ((rd*rd) > FLT_EPSILON) ? (1.0f / rd)
+													 : ((rd > 0.0f) ? 1024.f : -1024.f); //some made up large ratio for division by zero
 
 		llassert(llfinite(r));
 		llassert(!llisnan(r));