It might help to know why you want to avoid using the previous function, but I don't, so whether this will be of any help is sort of a long shot, but...
If you know the relative position of the field you want to display, for example, third from the last, you could do the following:
Create a running total which counts a recurring field within a group. Then create a formula:
whileprintingrecords;
numbervar display;
if {#runningtotal} = count({table.field},{yourgroupfield})-2 then display := {yourdisplayfield} + display;
display;
This would give you the third from the last record within the group, or use -3 for fourth from the last, etc. Since it will display in each row subsequent to it, you might need to add some suppression formulas if you only want it to display in one row. For the above formula (third to the last record), if you want the previous value to appear in the second from the last row, suppress the field in the other rows in which it appears by using the following in the format field->suppress area:
{#runningtotal} <> count({table.field},{yourgroupfield})-1
-LB