Когда избавитесь от Fraction и BigInteger, не забудьте проверять на переполнение.