It seems that the error code was meant to show expected value concatenated with provided value, hence the 1000 multiplier.
However the bitwise | operator hides the value - for example:
246000 in binary
0b111100000011110000
146 in binary
0b10010010
so bitwise OR
0b111100000011110010
which is 246002 instead of 246146
It seems that the error code was meant to show expected value concatenated with provided value, hence the 1000 multiplier. However the bitwise | operator hides the value - for example: 246000 in binary 0b111100000011110000 146 in binary 0b10010010
so bitwise OR 0b111100000011110010 which is 246002 instead of 246146