Why is this double instead of a Common::Rational?

(PS: This is your sound problem. You're creating a Common::Rational from a double. Since there is no constructor or assignment operator for Common::Rational that takes a double, I assume it's truncating to an integer on you)