very poor gas mileage could mean a bad O2 sensor. autopartswarehouse.com or bavauto.com are where i get my parts.
for my 84 325E I used a generic 3-wire sensor and just spliced it in. This one (a Denso) was $25 on evil bay, but I've used one like it (but Bosch) on my 93 SAAB for $60.