ResetToBeginning() resets the play factor to 0 if you are playing it forward, and to 1 if you are playing it in reverse. So in your case in the 2nd function you play it in reverse, reset it to beginning (which sets the factor to 1), then play it in reverse again... it's odd. It's completely unnecessary to call PlayReverse() the second time. Keep in mind you can also adjust the tweenFactor yourself setting it to whatever you want. if you know you want it to start from 100% (the end), then do just that -- tween.tweenFactor = 1f;
Factor is never 0. Look at the function I posted. If you played it in reverse before, amount per delta will be negative, so factor will be set to 1 by ResetToBeginning(), not 0. That function depends on what the "beginning" was. If you played it forward, 'beginning' is factor 0 after. If you played it in reverse, beginning is 1.
I also asked what version of NGUI do you have?