не вдаваясь в подробности пришли к следующей проблеме: код: double S, D, *iptr;
S = 163.70 * 100; printf("S - %f\n",S);
D = modf(S, iptr);
printf("*iptr - %f\n D - %f\n", *iptr, D);
выводиться на экран: S - 16370.000000 *iptr - 16369.000000 D - 1.000000
причем если заменить вторую строку на S = 16370; все работает корректно, как впрочем и на многих других числах.