Well Chris, the fact that the car is returning to poor running ~24hrs after resetting the CPU tells us that the fault is with an environmental sensor...
Air intake temperature or block/engine temperature would be my guess.
The reason I say that is because the CPU when reset runs in a closed loop with factory defaults.
It then starts comparing the values read from the lambda to what it expects to see from the sensors, and uses a lookup table in NVRAM to lean-out or richen the mixture over the complete rev-range as it sees fit, continually referring back to the lookup table. This can take a while as it doesn't just take the first value, rather an average.
The readings go something like this:
Air Intake temp: 25oC, Block temp: 80oC. (Temps Normal.)
Injector pulse: 0.1sec, RPM: 800 (Idle)
Lambda reading: 0.9 - (Lean)
Action: Lookup table query.
Findings: Running lean.
Result: Richen mixture by adding fuel.
It then reads the values again after adjusting the injector pulse, and sees if that matches the prerequisits of emmision controls.
If for example, the temp sensor is faulty, and measures the intake air as 0oC instead of 25oC, then the ECU will calculate that the air density is high, and the will richen the mixture to prevent lean running, while infact the air density is average and no richening is required.
Hence, one sensor is providing false data to the ECU, and throwing the whole thing out.
Do I make sence???