ReducedFraction quantizeValue(const ReducedFraction &value, const ReducedFraction &raster) { const auto valueReduced = value.reduced(); const auto rasterReduced = raster.reduced(); int valNum = valueReduced.numerator() * rasterReduced.denominator(); const int rastNum = rasterReduced.numerator() * valueReduced.denominator(); const int commonDen = valueReduced.denominator() * rasterReduced.denominator(); valNum = ((valNum + rastNum / 2) / rastNum) * rastNum; return ReducedFraction(valNum, commonDen).reduced(); }