It seemed to know when I was mad enough at it to be bothered buying a new one - as soon as I started getting worked up enough to go to the shop, my true speed would suddenly appear on the dial! Then I'd get to work/home and forget about it, and next time I hopped on the bike, it would be back to its old habit of reporting my speed at zero. I replaced the battery. I replaced the magnet. I cleaned the sensors. Nothing worked.
I finally bought a new one this week, and fitted it yesterday. I picked up the same model as last time for a 60% discount - it's obviously at the end of its production life. That way, I can just slot it into the same mount as the old one and not worry about replacing the cabling and sensors.
As I was slotting it in, I noticed that the contact points on the bracket where quite dirty - and when I turned the old computer over, the points on the back of it were not the best either. It looks like I could have just cleaned those contacts, rather than buying a brand new unit!