From the doc: After Detail Eval: This is called after a detail band is printed and all variables are evaluated for the current record. However, this is not the behavior I am seeing. When I change a variable value within afterDetailEval(), the new value is processed *before* the current record is printed. Example code: Integer TestInt = (Integer)this.getVariableValue("TestInt"); this.setVariableValue("TestInt", (TestInt==null ? 0 : ++TestInt)); Where TestInt is defined Class = java.lang.Integer; Calculation = System; Reset type = Report. I would expect that if you put this code in beforeDetailEval(), I would see $V{TestInt} on the first four detail rows as 0, 1, 2, 3, and that is in fact what I get. However, I would think that by moving the code to afterDetailEval() I would see $V{TestInt} on the first four detail rows as null, 0, 1, 2, which is not what I get. Instead, I get the exact same output as when the code is placed in beforeDetailEvent(). So it looks like whatever variable changes are made in afterDetailEvent() are processed BEFORE the current detail band is printed, instead of after like the doc seems to imply. Am I reading this wrong? Doing something wrong? Any pointers appreciated...