Заметил, что при приведении типа с плав. точкой (float) к целочисленному значению, дробная часть просто выкидывается, или производится округление к нулю: было 4.8, стало -> 4.
А надо бы юзать округление до ближайшего целого -> 5.
Пришлось подключить хидер rt_fp.h и пользоваться тамошней функцией UINT _ffixu_r(float).
Может быть, режим округления можно изменить каким-то другим, более правильным путём, не прибегая к вызову функций внешней библиотеки?
И почему такой грубый способ округления юзается по умолчанию? Разве это правильно - 4.8 округлять до 4?