Как-то так с округлением (без плавучки) div одним делением даёт сразу два необходимых результата (не факт, что у всех компиляторов)
div_t x = div(cnt, coeff);
div_t y = div(x.rem * 1000, coeff);
return x.quot * 1000 + y.quot + (2 * y.rem < coeff ? 0 : 1);