store values internally as decimal(9,6) (avoids rounding problems)