The Reed-Solomon decoder behaves incorrectly in the case of systematic codes and bad SNRs. The reason is the following:
If the received code word cannot be decoded (e.g, because there are too many errors), then decoderfailure is set to "false". In this case, always the all zero decoded information vector is returned (as mbit.clear() on line 216 and then decoded_bits is filled with mbit). In the case of a systematic code and a decoderfailure, all the received information should be used). The current implementation givdes BER of 0.5 in bad to medium channel conditions).