Mike,
Let's see if we can wrap this up.
>>A smaller number *must* be used.
>
>Then the field can be larger than the subtracted number, and you've got a bad order. So the field would have to be shortened.
His dueamount was 15,2 so we could make this work by subtracting from 999999999999.99 with no field shortening needed (I have tested it) :-).
? str(999999999999.99 - 999999999999.99,16,2) = " 0.00"
? str(999999999999.99 - 2.48,16,2) = " 999999999997.51"
? str(999999999999.99 - 2.47,16,2) = " 999999999997.52"
? str(999999999999.99 - -2.48,16,2) = " 999999999997.51"
? str(999999999999.99 - -999999999999.99,16,2) = "1999999999999.98"
See any problems with this, other than the conceptual "why" that MikeY raised?