ну, я бы кусок кода немого по иному реализовал, но общий смысл такой же.
надо еще успеть выход данных из 3го состояния вывести, а потом снова загнать.