I had found that any compass application on my Epic made a great level, but a really lousy compass. It would respond smoothly and predictably to changes in orientation with respect to horizontal, but was completely erratic when held level, regardless of direction or surroundings. Skeptically, I tried the "upside down" calibration method above, and it worked! I now have a compass again. Note that I tried calibrating horizontal in the usual manner (right side up) first, and it had no effect. But upside down, and my phone was fixed! Who got the idea to try this? What is going on in the phone that makes it work? I'm just glad that it did.