How can I catch the end of an interpolation with VInterpTo.?

I need to interpolate two locations and I do it with VInterpTo. I use it to update the position of a camera after a collision. It works great but then I need to stop the interpolation because i want to update the camera every tick without any interpolation when a collision is not happening.
I don’t want to check the distance because it wouldn’t be accurate enough and I have seen that FVector::equals, even with a large tolerance, doesn’t give me a good resulting behaviour.

Unfortunately I don’t have have a computer with UE4 now but in pseudo code it looks like this:

FVector finalCameraLoc = ....location where the camera should be;

FHitResult hit;
TraceForCheckingCollision( hit, .... );

// handle collision
if( hit.bBlockingHit )
{
     // directly set the camera where the collision happens
     outVT.POV.Location = hit.Location;
     bIsColliding = true;
}
// no collision
else
{
     // it was collising in the tick before, want to return in position smoothly
     if( bIsColliding )
     {
          // smootly move the camera back in position
          outVT.POV.Location = VInterp(outVT.POV.Location, finalCameraLoc, ...);
          
          if( INTERPOLATION IS FINISHED ) // don't know how to do this part
          {
               bIsColliding = false;
          }
     }
     else
     {
          // Normal case, no collision happening and no precedent collision to handle
          outVT.POV.Location = finalCameraLoc;
     }
}

Do you have any suggestion about how to implement this?

If you look at the source for the implementation of that function, you’ll see that they do their own epsilon check. If the two positions are close enough to each other, it just returns the starting position so that no update to the position actually occurs.

Epsilon checks are a pretty required approach when it comes to dealing with floating-point numbers. If this answer wasn’t helpful, can I ask what you’ve tried with epsilon checks (FVector::equals tolerance) that didn’t give you “good resulting behaviour”?

Thank you for the answer. I should probably try again with the equals approach, maybe I did something wrong last time I used it but I remember it (almost) never found the values to be equal.
I will be back with updates as soon as I can try it. Thanks for now.