Original code…

` `` for (int prim = primitivesNewWorld.Count; prim-- != 0; ) { float thisFrac; Vector3 newPosition = pos; if (primitivesNewWorld[prim].SegmentIntersect(out thisFrac, out newPosition, out normal, segCopy)) { pos = newPosition; frac = thisFrac * thisSegLenRelToOrig; segCopy.Delta *= thisFrac; thisSegLenRelToOrig *= frac; } }`

Updated code…

` `` for (int prim = primitivesNewWorld.Count; prim-- != 0; ) { float thisFrac; Vector3 newPosition = pos; Vector3 newNormal = normal; if (primitivesNewWorld[prim].SegmentIntersect(out thisFrac, out newPosition, out newNormal, segCopy)) { pos = newPosition; normal = newNormal; frac = thisFrac * thisSegLenRelToOrig; segCopy.Delta *= thisFrac; thisSegLenRelToOrig *= frac; } }`