A slight bodge here in that my read space function returns TRUE if the command exits with an error, like a not logged on error, but also my set free space function exits TRUE if successful.
Although the set free worked, the user space allocated to SYST has remained at 16MB. This is because of another bodge: PiFS doesn't implement user space accounting, so it returns a default value for any read free requests and ignores all set free.
The 16MB value is itself a bodge within a bodge which I implemented myself to fix a free space problem with DOS Plus with Econet.