I found DiskSalv 2 always very reliable (of course working under 4 GB) but the worst error I think needed 3 or 4 runs before solved. (not validated => error on block xx => block used twice error => out of range error => fixed; order of errors not necessarily this). Validate was mostly enough to get things fixed, but after I got fast enough drives and SCSI3, it was much easier and faster to copy the problematic partition to another and reformat and copy back.