Mitchel,
attached is the library for the new vi..
I had to remove the while loop inside of the subVI and put it in the caller VI.
The problem you are seeing is that when a program runs a subVI, it passes data in, the subVI runs it's routine, then when it completes, it outputs the final values.
You can do this the way i have in my example, or you could use global variables. I'm sure there are other ways to do it as well.
This isn't a normal subVI, and has to be treated a little differently.