CLEAR >lcEnc = encrypt("Test string here") >? lcEnc >lcDec = decrypt(lcEnc) >? lcDec > > > >FUNCTION encrypt >LPARAMETERS tcString >LOCAL lcString > > seedRand(0) > lcString = SPACE(0) > FOR lnI = 1 TO LEN(tcString) > lnRand = ROUND(getRand() * 255.0, 0) > lcChar = SUBSTR(tcString, lnI, 1) > lcChar = CHR((ASC(lcChar) + lnRand) % 255) > lcString = lcString + lcChar > NEXT > RETURN lcString > > > > >FUNCTION decrypt >LPARAMETERS tcString >LOCAL lcString > > seedRand(0) > lcString = SPACE(0) > FOR lnI = 1 TO LEN(tcString) > lnRand = ROUND(getRand() * 255.0, 0) > lcChar = SUBSTR(tcString, lnI, 1) > lcString = lcString + CHR((ASC(lcChar) + 255 - lnRand) % 255) > NEXT > RETURN lcString > > > > >FUNCTION seedRand >LPARAMETERS tnSeed > > DECLARE INTEGER srand IN msvcr71.dll as cSrand INTEGER nSeed > DECLARE INTEGER rand IN msvcr71.dll AS cRand > cSrand(tnSeed) > > > > >FUNCTION getRand >LOCAL lnRand > > RETURN cRand() / 32767.0 >This code works every time. Thank you. But (don't take it as a criticism of your approach).