En el ejemplo habría, antes de iniciar el bucle, hacer:
Código Delphi
[-]
numero:= frac(abs(numero));
Con esto me aseguro que el procedimiento funciona para números con parte entera distinta de 0 y tanto números positivos como negativos.
Estoy buscando en la ayuda, pero supongo que debe existir una función que devuelva la cantidad de cifras decimales de un número.
Saludos, Enrique Gabriel.