Moving UI elements over time produces bug.

Hi, I have a button that is moved with the code below, but it randomly sometimes gets stuck without reaching the target, any ideas would be much appreciated.

    public RectTransform buttonsRT; // button RT used to move it.
    public RectTransform targetPosOneRect; // empty gameobject on the canvas that is used as a target.
    public RectTransform targetPosTwoRect;

    public void Execute()
    {
        StartCoroutine(PlayButtonCoroutine(targetPosOneRect.position, targetPosTwoRect.position, 750.0f, 1000.0f)); // Button pressed
    }

    private IEnumerator PlayButtonCoroutine(Vector3 posOne, Vector3 posTwo, float speedOne, float speedTwo)
    {
        yield return MoveRectTransformToTarget(buttonsRT, posOne, speedTwo);
        yield return MoveRectTransformToTarget(buttonsRT, posTwo, speedTwo);
    }

    private IEnumerator MoveRectTransformToTarget(RectTransform objectToMove, Vector3 posTarget, float speed)
    {
        while (objectToMove.transform.position != posTarget)
        {
            objectToMove.transform.position = Vector3.MoveTowards(objectToMove.transform.position, posTarget, speed * Time.deltaTime);
            yield return null;
        }
    }

The solution is that UI elements should be moved by buttonsRT.anchoredPosition and target.anchoredPosition.