Calculating translate end position

I am using the translate method to move a camera to a relative position. To make this look smooth, the relative position is lerp’d over time. Basically,

transform.Translate(Vector3.Lerp(new Vector3(0,0,0), newPos, Time.deltaTime));

I’m try to work out a condition to allow me to stop the translation happening, once the transform reaches somewhere near newPos. Something like,

if (Vector3.Distance(transform.position, oldPosition + newPos) < 5) {
	//Stop moving the object
	newPos = new Vector3(0,0,0);
}

Vector3.Distance doesn’t work because oldPosition+newPos does not necessarily point to the same position as it is translating to.
What I really need is a way of returning the result of where a translation will end up, without actually moving the object itself.

Edit: This system is used for moving a camera based on a swipe, and newPos is calculated from a fixed movement, e.g.

if (/*swipe conditions and direction check*/) {
    newPos.y += 100;

I hate to answer my own question, but I think I worked it out in the meantime. The following appears to work,

Vector3 newPosition = transform.rotation*newPos+oldPosition;    
if (Vector3.Distance(transform.position,newPosition) < 5) {

Where oldPosition is the transform position when the translation started.

I guess this is effectively rotating the relative vector newPos to align with the transform and then adding that to the old position.

Why not writing your own lerp method:

public static Vector3 MyLerp(Vector3 current, Vector3 target, float ratio)
{
     float __range = 5f;
     float __x = current.x + (target.x - current.x) * ratio;
     float __y = current.y + (target.y - current.y) * ratio;
     float __z = current.z + (target.z - current.z) * ratio;
     Vector3 __temp =  new Vector3(__x, __y, __z);
     if(__temp.magnitude < __range)return current;
     else return __temp;
}