While using my laptop to load some old training DVDs for archiving, I discovered evidence of a bad sector on my laptop's hard drive (Seagate Momentus 7200.4 SATA 500GB): upon investigating file compare errors, I found one fairly large file (464MB) where, after several tries, everything matched perfectly except the last 16 bytes which displayed three or four variations on the hard drive.
While running Check Disk (at Windows 7 Ultimate x64 boot-up, initiated from Windows Explorer with the option "Scan for and attempt recovery of bad sectors"), CHKDSK reported a single bad sector -- in the file in question -- and claimed to have fixed it. So far, so good.
After running file compares again, though, I found that CHKDSK had zeroed out the last 32768 bytes. I expected all but the last 16 bytes of the file to be correct; why was any of it zeroed out?
The last time I had such detailed experience with CHKDSK and live data involved MS-DOS and floppy disks, and I'm pretty sure CHKDSK really did recover most or all of the data in question. So this was a surprise. Why couldn't Windows 7's CHKDSK succeed at "attempt[ing] recovery of bad sectors" and at least read what ordinary utilities could read?
At the very least, this is motivation to be diligent about backups!