Expression compiler was creating Long preferentially to double/bigDecimal in all cases, even if the literal had a trailing ".0" in the syntax.
This causes bugs because expressions like 90.0 div 100000.0 produce 0 as a Long integer as both arguments are taken to be Long and div is then integer division.
The result is you end up dividing by zero, which unfortunately, is a processing error causing backtracking when parsing. So the symptom is often that some array element is not parsed, or some choice is taken wrong.
A trace will show what is happening, but it would be a mystery as to why unless you put daf:trace all over your expressions to see the values they are producing.