Determining the status of a Coroutine

is there any way to see what the current status of a coroutine is? for example if I am driving my GUI based on the current status of a coroutine display X while coroutine is at PointX, and display Y while coroutine is at PointY, and display Z when coroutine is finished.

I know that you could probably do this with globals, but I am more thinking of actually seeing what the last thing yield returned by the coroutine was.

Only way would be to have the script maintain a state variable and update it in the coroutine. The script has access to its own variables whether in the Update() or in a coroutine.

class Example:MonoBehaviour
{

int m_state;
IEnumerator CoroutineFunction ()
{
  m_state = 0;
  // do something
  yield return null;
  m_state++;
  // do something else
  yield return null;
  m_state++;
  // do something else
  yield return null;
  m_state++;
  // do something else
  yield return null;
}
void Update()
{
  switch(m_state)
  ....
// or
  if(m_state == *desiredState*)
  ...
}