LineTraceSingle's HitResult.Time exceeds 1.0

I’ve been using LineTraceSingle to do some additional filtering to check for Line of Sight of certain collisions found through other types of traces.

This is working fine most of the time, but I ran into an issue where under certain scenario, the LineTraceSingle’s HitResult will return a blockingHit with a Time greater than 1.0, meaning the LineTrace itself went past the End vector, which doesn’t make much sense.

The scenario:


In here, a LineTrace is being made to check if there’s no blocking geometry up to the End Point, which is where the Blue line ends. This End Point is touching Capsule A, which is not set to block the trace, so the result should be: no blocking hits.
Capsule B on the other hand, is set to block traces, but is enveloped by Capsule A. Because of this setup, it’s expected that any LineTrace should be able to reach a point on Capsule A’s surface without being blocked by Capsule B at all.
However, I found that when the difference in radii between Capsule A and Capsule B is 15 or less, then the LineTrace seems to just snap to hitting the Capsule B, resulting in a blocking hit. (Capsule A and B belong to the same Actor, but Capsule B is the RootComponent, in case it is relevant).

The comment on FHitResult.Time states that:

‘Time’ of impact along trace direction (ranging from 0.0 to 1.0) if there is a hit, indicating time between TraceStart and TraceEnd. For swept movement (but not queries) this may be pulled back slightly from the actual time of impact, to prevent precision problems with adjacent geometry.

What this tells me is that Time may vary slightly based on some underlying solver calculations to prevent problems.

I can honestly just make an additional consideration on my code so that when the LineTrace returns a blockingHit exceeding a Time of 1.0, I can just discard it, but I would like to know if there’s anybody that could make a bit more sense of this.