I think there is a bug in the cvs() base64 decode function. If the input data ends with a newline, an extra $00$ is added to the decoded data. I tested this in pxplus 14 and pxplus 19.
a$=cvs("test","ascii:base64")
print hta(cvs(a$,"base64:ascii"))
74657374
print hta(cvs(a$+$0a$,"base64:ascii"))
7465737400