If you want something concrete, here's a program from 2004 that fixes the checksums for R/S
https://dl.dropboxusercontent.com/u/12206225/PSavFixV2.zip
included is a readme on how to use it, and the source code.
How it calculates checksums:
int Chksum(int length, int *Data)
{
int Chk,i,tmp;
length = length>>2;
Chk=0;
for(i=0; i<length; i++)
Chk += Data[i];
tmp = Chk>>16;
tmp +=Chk;
Chk = (tmp&0xFFFF);
return Chk;
}