elevation wrong

Recently my 840 has started to report totally nonsense grades (like -5% while climbing), and very incorrect elevations.  The elevations are correct again after a manual calibration but soon it will be off by ~500 ft, and the grade number is now basically just random.  The two ports on the back are clean and dry.

Any ideas, or is it just broken.