OK, commented out that code group as suggested, and another three lines further on that also stopped it from compiling:

free(plane_equation_coefficients);
free(eqnAVector);
free(eqnBVector);

I assumed as these were being 'freed' that would be OK?

3 point plane didn't make any difference either. Tried three corners and rotating this round four times so all combinations tried...still roughly the same, although this time the front-left was a little too low and actually slightly scrapped the aluminium with the nozzle head...d'oh! Luckily the print bed is sprung at the moment so it has a bit of give, but I'm hoping I can fix it solid once the levelling is sorted.

I've ordered a replacement sheet of glass to try.

Obviously still trying to get to grips with how this all works, but, assuming the glass is perfectly flat (or close enough!), scanning a simple 2x2 grid (as close as possible to the 4 corners), should produce a perfectly flat plane, even if this plane is angled...is that correct?

If I'm still having the same problems, what does that mean? What else can cause this sort of thing? The measurements which are being taken are very accurate and repeatable (proved by the tested M48s).

Just a few thoughts which I wonder could have any impact...

* Is there anything that could be being loading from the EPROM memory that could be distorting the map?

* When the G29 is being completed I get 'Z endstop hit'...could this be stopping figures lower than the G28 Z-home position from being correctly registered?

* Is there anything else that could have warped that would cause this?

* If I've got software max-stop points set and the nozzle position moves outside of these during probing, which mine does as the probe is 32mm in front (Y axis) of the extruder and the probe scans right to the back corners so the extruder is just about off the table at this point, would that cause any issues?

* If one of the offsets is set to '0' (my X offset is), is there anywhere in the code where this would read as empty and load some default value or cause a 'division by zero' or similar?

As always, appreciate your on-going support...after 67 pages I suspect you're getting a bit fed-up with it by now, so thank you.