I haven't used previous in my reports, but what I would try is putting a flag in the Group Header Section stating a change, then in the Details Section check the flag, if set, skip the calculation and resest the flag. The next record through would use the calculation.
Also, it seems that you are trying to reset the MilesDiff variable, if so, it should be declared as Shared numberVar in both sections...
OR
Group Header Section:
whileprintingrecords;
shared booleanVar newGroup := true;
Details Section:
whileprintingrecords;
numberVar MilesDiff :=0;
shared booleanVar newGroup;
if not newGroup then
MilesDiff := {FTK_MAIN.METER_1} - previous({FTK_MAIN.METER_1})
else
newGroup := false;
MilesDiff
Lots of ways.
Hope that one of them helps