continuously Find closest with tag, in update.

How can I continue to update the closest object with tag? I want to know what object is closest at all times, but it never changes, just sets the closest once and it stays at the same spot.

I appreciate any help here.
Thanks

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;

public class ESportBallMovement : MonoBehaviour {

GameObject[] ballWayPoints;

GameObject closest;
private Vector3 targetPos;
float distance = Mathf.Infinity;
public float speed;
float step;

void Start()
{
	ballWayPoints = GameObject.FindGameObjectsWithTag("ballWaypoint");
	step = speed * Time.deltaTime;
}

void Update () 
{
	FindClosestWaypoint ();

	//sets the target position and moves toward it
	targetPos = (closest.transform.position);	
	transform.position = Vector3.MoveTowards (transform.position, targetPos, step);
}

GameObject FindClosestWaypoint() 
{
	//populates the array of ballWaypoints
	foreach (GameObject ballWayPoint in ballWayPoints) 
	{
		//finds the distance between ball and the ballWaypoints
		Vector3 diff = ballWayPoint.transform.position - transform.position;
		float curDistance = diff.sqrMagnitude;

		//finds the closest ballWaypoint
		if (curDistance < distance) 
		{
			closest = ballWayPoint;
			distance = curDistance;
		}
	}
	Debug.Log (" Current Waypoint:" + closest.name);
	return closest;
}

}

The problem is in your FindClosestWaypoint method. I would add a variables called smallestDistance and get rid of line 31 completely. I would change your if statement to…

 if (diff < smallestDistance) 
    {
    closest = ballWayPoint;
    smallestDistance = diff;
    }

Thanks for the reply @TheyLeftMe4Dead, I ended up finding the solution, I was never resetting the distance. Here is the code with the fix. `GameObject FindClosestWaypoint()
{
//reset distance
distance = Mathf.Infinity;

	//populates the array of ballWaypoints
	foreach (GameObject ballWayPoint in ballWayPoints) 
	{
		//finds the distance between ball and the ballWaypoints
		Vector3 diff = ballWayPoint.transform.position - transform.position;
		float curDistance = diff.sqrMagnitude;

		//finds the closest ballWaypoint
		if (curDistance < distance) {
			closest = ballWayPoint;
			distance = curDistance;
		} 
	}
	//Debug.Log (" Closest:" + closest.name);
	return closest;
}`