The G_ERR column is an unsigned short int (16-bits). By some FITS convention, 16-bit unsigned numbers are stored with an offset of -32768. So, you need to add 32768 to G_ERR to get the right value. If you look at the file with "fv", fv adds the correct offset form the file header. So, when there is no error condition G_ERR should have a value of 0 (-32768 stored in the file).
The following bit description is from the source code in
cl/src/diag/gfits.c:
For each beam, there are overflow conditions. Two bits indicate
errors of various degrees:
| 0 | 0-15 | errors in previous 1s |
| 1 | 16-255 | errors in previous 1s |
| 2 | 256-4095 | errors in previous 1s |
| 3 | >=4096 | errors in previous 1s |
| err = (g[0]->misc >> 16) & 0xffff |
| err[1:0] | wideband up shift saturation |
| err[3:2] | wideband FFT overflow |
| err[5:4] | narrowband up shift saturation |
| err[7:6] | narrowband FFT overflow |
| err[9:8] | narrowband lowpass filter saturation |
| err[11:10] | narrowband mixer saturation |