if you are using reflection of PGNO, there is no point in calculating parity. and could be calculated wrong.
parity is a poor man solution to check if value is correct. it reduces error check to a single bit. using reflection one can compare every bit. result of that comparison should guide you to specific bit or I/O channel to troubleshoot.
so when you see the issue, get all values (PGNO sent, PGNO reflected, parity value) and check them out.
Do any of the log files contain all the values (PGNO sent, PGNO reflected, parity value)?