I had issues with rounding base vs foreign currency. These were also solved using payment type calculators rather than a calculation that is based on ticket values.
This is a huge topic, but it is mentioned in there somewhere. Might be an interesting read, it shows the huge amount of work Emre and QMcKay put in to get this working as well as it does now…