Без пояснений не удовлетворяет последнему условию. Программа работает и для отрицательных и для положительных чисел с одинаковым успехом.