You changed:
- else if ( face->blend->normalizedcoords[j] < axis->startCoord ||
- face->blend->normalizedcoords[j] > axis->endCoord )
into:
else if ( face->blend->normalizedcoords[j] <= axis->startCoord ||
face->blend->normalizedcoords[j] >= axis->endCoord )
That's the bug, since axis->peakCoord can be equal to one of those values, and if it is, an axisScalar of 1 is desired whereas with your change it will pick up 0.
Re "excessive rounding error", sure, you fused two multiplies together. Thanks. If you really care about excessive rounding error though, bug report about not rounding deltas to FUnits is much more "immediate".