Non so se può essere utile al tuo caso, ma occorre stare attenti agli arrotondamenti all'interno di un'applicazione specialmente nel caso in cui si abbia a che fare con delle "valute".

Oltre al classico errore di precisione che potrebbe influenzare l'arrotondamento di un valore, c'è anche l'algoritmo del "Banker's Rounding", spesso interpretato come bug, che può influenzare l'arrotondamento stesso fornendo un risultato diverso da quello che ci si aspetta.

In generale, se non diversamente specificato, le CPU arrotondano al numero pari più vicino; se arrotondi all'interno il valore 0.5 ti verrà restituito 0, se arrotondi 1 ti verrà restituito 1, se arrotondi 1.5 ti verrà restituito 2 e così via. In definitiva, non arrotonda all'intero superiore come avviene normalmente nel campo finanziario.

Questo non sembra essere il tuo caso, ma potrebbe trattarsi di un errore magari generato dal tipo di dato sbagliato che viene rappresentato nella CPU con un errore che ne impedisce il corretto arrotondamento così come lo intendi tu.

Spero di aver comunque dato indicazioni utili in generale.

Ciao!