Coroutine is jerky after exiting trigger zone

Hello! I have a script attached to the camera that follows the player and moves smoothly to another position when changing directions. The problem is that when exiting a trigger zone(during which the camera does not move) the coroutines move the camera in the opposite direction for a few frames before doing what they’re supposed to.
Debugging the camera position shows this(x axis):

  • cam pos 1.2
  • Exiting trigger
  • cam pos 1.2
  • cam pos 1.7
  • cam pos 1.5
  • …and after a few frames it
    decreases from 1.2 as it should from
    the beginning.

Note this only happens when i go through the trigger zone and exit on the other side. If i enter the trigger and exit on the same side it works well with no jerkiness. Here is the script with some pseudocode on the if statements:

    public Transform player;
    public Vector3 offset = new Vector3(2.5f, 1.5f, -7.0f);
    public bool onTrigger = false;    **//true on trigger enter and false on exit**

    IEnumerator Smooth(Vector3 start, Vector3 end, float overTime)
    {
        float startTime = Time.time;
        while (Time.time < startTime + overTime)
        {
        offset = Vector3.Lerp(start, end, (Time.time - startTime) / overTime);
        yield return null;
        }
        offset = end;
    }

    void Update()
    {
        if ("NotFiring")
        {
            if ("moving backwards")
            {
                StartCoroutine(Smooth(offset, new Vector3(-2.5f, 1.5f, -7.0f), 0.2f));
            }
            else if ("moving forwards")
            {
                StartCoroutine(Smooth(offset, new Vector3(2.5f, 1.5f, -7.0f), 0.2f));
            }
        }
    }

    public void TriggerExit()   **//activated on trigger exit**
    {
        if ("moving forwards")
            StartCoroutine(Smooth(new Vector3(-2.5f, 1.5f, -7.0f), offset, 0.2f));
        else if ("moving backwards")
            StartCoroutine(Smooth(new Vector3(2.5f, 1.5f, -7.0f), offset, 0.2f));
    }
    
    private void LateUpdate()
    {
        if (onTrigger == false)
        {
            transform.position = player.position + offset;
        }
    }

Please help a noob!

After some fiddling i found a way to smooth the transition was to change the x values inside TriggerExit() from -2.5 to -2.0 and 2.5 to 2.0 Don’t know why but it now works almost perfectly…