I have a 99 M3 (E36), and the check engine light won't go away. The BMW dealer has replaced the oxygen sensor, gas cap, and done a tune-up on one visit. The light came back on in a few days. After that the computer was reset, but again the light came on in a few days. I got the following info from the dealer:
I PULLED THE FILE ON YOUR CAR. IT HAD 254 TIMES BETWEEN VISITS A MAJOR TANK LEAKAGE DECTION. THE DME HELD CODE P0144 WHICH IS A MAJOR TANK LEAKAGE FAULT, NORMALLY EITHER A GAS CAP IS LEAKING OR THE CAR WAS FILLED UP WHILE RUNNING..........
I never fill up my car while it is running, and I always tighten the cap as far as possible. Another mechanic has also thoroughly gone over the gas tank and fuel system, and found nothing.
Any ideas on where to go next?