I expect you could do it really quickly on a modern MCU by storing the syndrome values which correlate errors to bit positions.
For POCSAG you have a (31,21,2) BCH -- so 21 data bits, 10 BCH bits and an overall parity bit.
I'm not certain what good the parity bit is, as you can't easily (AIUI) tell if there's an error in the parity bit. I guess on its own it's good to guarantee you can't have a codeword of all the same bit (which PLL based FSK/FM transmitters won't like, you'll lose modulation as it's AC-coupled).
Back to BCH...
If you have 10 BCH bits, by definition you have 2^10=1024 possible syndromes.
BCH + Data is 31 bits, which means you need a 32-bit integer to store the error mask (XOR mask).
You have 31 possible 1-bit errors and (31*30)=930 2-bit errors, giving 961 entries in a 1024-entry table.
So there's what, a 6.25% chance of detecting an N>=3 bit error? ((930-1024)/1024)
If you get an error burst at the end of the CW - it's likely to knock out the parity bit too. So you can't rely on parity to tell you if the CW was corrected OK...
I'll have to have another go at modifying hamster_nz's code to work on a POCSAG codeword...
EDIT: Answering my own question --
0x83 (0b10000011) is the HDMI Generator Polynomial expressed in binary (G(x)=1+x^6+x^7+x^8
0x4A (0b01001010) is the syndrome value when there is an error in the current data bit.
Look at this in the context of Ross Williams' CRC code and things start to make more sense!