El problema puede estar en la definición de la variable local en que tipo la definas, yo tenia algo parecido, estaba trabajando con el tipo Double y me pase al tipo Extended, a la hora de guardar los datos lo hacia diferente, ya no me pasa.
Código Delphi
[-]
var
Valor: Double, Sustituir por Extended;
Un saludo.