I opened the project in Laz 1.6 and again (naturally) walked through the code and it correctly called the SaveElec proc.
So you use Lazarus 1.6 and 2.2 in same directory? Try to copy your entire project to new directory, delete anything you don't need to compile (i.e. all subdirectories) and try to compile and test it *only* with 2.2.
That's probably a good next step -- it will take me some time I suspect.
[Edit] - I'm reasured by WP's comments though

Do you have any units you use outside of project directory?
Other than Laz or FPC Units - no.
Try to change name of procedure SaveElecRates (to SaveElecRatesTest e.g.). Try to compile it and after Lazarus complains that SaveElecRates doesn't exists change name in places you call it.
I ought to have thought of that

Re-naming had no effect BUT
Moving it to a new location - relative to the SaveGas proc. - has solved the problem !!
I used to have :
709 procedure SaveFiTRates;
722 procedure SaveElecRates;
735 procedure SaveGasRates;
749 procedure Save_MetSubFile;
[...]
Now I have :
709 procedure SaveFiTRates;
// 722 procedure SaveElecRates;
735 procedure SaveGasRates;
749 procedure Save_MetSubFile;
[...]
1176 procedure OpenCSVFile(FN : String);
1184 procedure Save_E_Rates;
... and the call to Save_E_Rates does go there!
I must learn to 'look ahead' before I concider project modifications

Thanks for the support and feedback - as usual eventually productive (why don't we have an 'appluse' emoji ?)
ps in response to posting whilst I was typing ...
@dseligo - and your suggestion is greatly appreciated.
[EDIT]
I may have spoken too soon
still working on it . . . . .