Coroutine not waiting for While Loop to finish

I am wanting a coroutine to finish a while loop then call DoSomething(), but DoSomething() is getting called before its finished.

	   while (time > 0.0f)
	   {
	      	time -= Time.deltaTime;	 
	      	transform.localScale = Vector3.Lerp(targetScale, originalScale, time / originalTime); 
	      	yield return 0;
	   }
DoSomething();

First of all, have you made sure your variable time is not zero or lower upon entering the coroutine? Second, I am not actually sure what yield return 0 will do, but when I use coroutine and uses while loops, I utilize yield return null instead.