The CEIL() function can return an incorrect result for certain inputs.
There are a number of queries in the test that report incorrect results, but one can exemplify the issue.
select 'ceil(d121/3)', id as id, d121/3, ceil(d121/3) as val from dtypes;
where d121 is defined as decimal(15,1).
Because of the expression inside the ceil function, the internal scale is shifted.
Inside getRoundedIntegralPart(), the scale handling appears to cause a 0 rather than a 1 to be emitted for d121 = .2