Не самое лаконичное решение, но все же. Я тестировал и смотрел как работает код - все работает в соответствии с условиями... Или я условия не правильно понял?