The attached code works. As I am using the next beta an sbp file may not load on your system so it is in text form to copy and paste into the IDE. The main thing for simple use is to use Mode 2 which avoids using inialisation vctors (IVs) for block chaining. Your problem was that the IV on encryption was not the same as the IV on decryption as Crypto.New1 creats a new random IV each time (The help incorrectly states that the default IV is all zeroes

it appeared like that on testing but is apparently not true

)
I don't' understand "Taking the encryption leaves ..." but after decryption of a string there are spare bytes that have been used to pack the string to a muliple of 8 bytes. I've tried to explain this in the comments in DesDemo.sbp. The output from DecryptString should strip them off. Bad data complaints on DecryptString arise because when decrypted these packing bytes are not within the valid range - they have specific values to tell DecryptString how many bytes were added as packing.
You also had an unneeded extra parameter in DecryptString.