If you have a copy of FiatEcuScan and a VAGCOM cable you can connect up to the ECU and 'watch' the o2 sensor live to make sure its switching the lambda value each side of stoichiometric as it should do.
I recently had the same problem, but with higher CO values - in the end it turned out to be my 1 yr old CAT!!!
Is your CAT OE or after market? If its an after market jobby Ill put money on it right now being the CAT...... changing the 02 sensors, oil changes etc will help mask the problem and may even scrape you through the MOT but, as I say if its not an OE CAT ill bet you thats the problem.
In the end I spent nearly €700 chasing the problem, when right off the bat my trusted mechanic told me it would be the CAT - I didnt believe him as like I say mine was only 12 months old and even though it wasnt OE, it came from a very good manufacturer with a guarantee.
Once I replaced it with a 2nd hand OE CAT from a breakers yard (50 quid) my emissions were back to 0 immediately and a valuable if expensive lesson was learnt.
TBH ill be very surprised if it is your 02 sensor, if the lambda is passing within tolerance I think you should be looking elsewhere 1st.
-1998 916 Spider 2.0TS Lusso-
H&S Corse stage 1.
CATCAMs stage 1 cams with Savali custom ECU remap.
305mm discs with 166 4-pot callipers.
Ragazzon exhaust mid section.
Biscione Racing 2x70mm rear section.
17" Zender Siena wheels with 3mm rear spacers.
etc etc etc!