I have sorted the problem, it was the air flow temp sender.
It read true at at idle but must of been reading wrong when flow increased and gave the ecu a incorrect value.
That's very good to hear
The temperature sensor is not dependent on the flow, except when the temperature changes rapidly as it can when you enter or exit a parking building, so I think it has run overly rich or lean at all rpm. Except idle, where the oxygen sensor is used to ensure that the mixture is exactly on the spot, even if sensors give slightly incorrect signals.
Thanks for sharing your solution, I'm sure it will be useful to others