Thanks @Graeme for reporting it. I looked at the example and I'm looking at it again now, but I don't think it helps, so I'll explain why.
In the OnBeforePrint event, whether I use values from a dataset or a variable, they're assigned to the next line.
To illustrate with the example you provided, in `rptexpressions.pp` after the first TExpressionsDemo.DoBeforePrint, the value of rpt.Variables.FindVariable('isEven').AsBoolean is "false," but the first line of the report displays "true." This is because, as mentioned above, the next line is displayed.
Another problem is that zeos calculated fields don't work; I didn't recognize them.