According to a training presentation from 2016 (slide 40), when computing viability all fractions are [to be] rounded UP to the next whole number.
Also (slide 47) the viability threshold is not recalculated if some attendees leave; only the initial attendance figure when proceedings opened is used throughout.
The fractions used to award delegates are normally rounded up or down at the 0.5 threshold (slide 51)...
... but if not all delegates could be allocated this way, then the leftover is awarded to the group with highest decimal below 0.5 (slide 56).
So the calculations from the image you've posted are actually correct according to these rules. The last fraction 3.2 was rounded to 4 because 0.2 is also the highest figure below 0.5 in that column: the first figure has 0.05 (so less than 0.2), while the 2nd figure has 0.7 (which is above 0.5) so it is discarded...
They even show an example (similar to the one you posted) on their next slide:
Note that you can also end up with too many delegates by the initial rounding process. In that case (slide 58) a delegate is subtracted from the group with the lowest decimal above 0.5... as long as it's not a group with a single delegate, i.e. those are excluded from this latter elimination process.
Also (slide 60) if there's a tie as to whom should lose a delegate (between two or more groups), it's decided by a coin toss or drawing names from a hat.