Rational.parse('9.9').toDecimalString() == '9.09'

Rational.parse('9.9').toDecimalString() will return '9.09' my dirty hack is to 
change Rational's method toStringAsFixed line:
final decimalPart = tmpRound._toInt().toString().substring(intPart.toString().length);
to
final decimalPart = tmpRound._toInt().toString().substring(intPart.toString().length + (intPart.toString().startsWith('9') ? 1 : 0));

this makes 'nine' values print correctly and all test passing but I'm unable to create real solution atm.