rotateTowards works on villains, but not boss

Right now the defenders rotate towards the closest villain, but not the boss. The Boss is successfully being returned as target. But the defenders won’t rotate towards him.

	public Transform target;
	GameObject[] villains;
	public float speed;
        private GameObject Boss;


public Transform FindTarget()
	{
		villains = GameObject.FindGameObjectsWithTag ("villain");
        Boss = GameObject.FindGameObjectWithTag("Mage");
       // Debug.Log(Boss);

        Vector3 position = transform.position ;
		float distanceToTarget =  float.MaxValue ;
		GameObject closest = null;

		GameObject player;
		player = GameObject.FindGameObjectWithTag ("Player");

        //Debug.Log(villains.Length);

		if (villains.Length == 0)
		{
            Debug.Log("Boss is " + Boss);
            if (Boss == null)
            {
                closest = player;
                target = player.transform;
            }
          else
            {
                target = Boss.transform;
            }
               
            
        }

		if (villains.Length  > 0 )
		{	
			 

			foreach (GameObject villain in villains )
			{

				float curDistance = Vector3.Distance (villain.transform.position, transform.position );
				if (curDistance < distanceToTarget )
				{
					closest = villain ;
					distanceToTarget  = curDistance ;
					target = closest.transform ;
				}
			}
		}
        Debug.Log(target);
		return target ;
	}


void Update () {

	if (target != null)
	{
            Debug.Log("villains.Length = " + villains.Length);

            if (villains.Length == 0)
		{
            Debug.Log("villians.Length is 0 and I should be rotating towards other target");
			Vector3 targetDir = target.position - transform.position ;
			float step = speed * Time.deltaTime ;
			Vector3 newDir = Vector3.RotateTowards(transform.forward, targetDir ,0 ,0.0F);
			transform.rotation = Quaternion.LookRotation(newDir);
                

            }

		if (villains.Length  > 0 )
		{	
			Vector3 targetDir = target.position - transform.position ;
			float step = speed * Time.deltaTime ;
			Vector3 newDir = Vector3.RotateTowards(transform.forward, targetDir ,step ,0.0F);
			transform.rotation = Quaternion.LookRotation(newDir);
   

            }
     
	  }

In the Console it says the Boss is the target. It is entering the if(villains.Length == 0) condition, but it still doesn’t rotate towards the boss. I can’t see what the difference is between this condition and the if(vilains.Length >0) condition where the villains actually turn. I also included the FindTarget code in case that is part of the issue, but it does return Boss as the target according to the console.

Thanks for your help.

ANSWERED
After posting this and a lunch break I finally saw that the step in the if(villains.Length == 0) was set to zero, so of course they didn’t turn. Sometimes the release of asking the question helps find the answer. Thanks for being there to ask.