it is not only int32 that is wrong, the remaining (uint32, int64 , and uint64).
test io.tst bails out on the first failure.
here is the outputs (in bit format). Hopefully it gives some clues.
octave:35> s32
s32 =
11011001101010010011101110110101 00000000000000000000000000000000
11000101100111111011000110100100 00000000000000000000000000000000
octave:36> s32t
s32t =
11011001101010010011101110110101 01110101100110011111110000101100
11000101100111111011000110100100 01100110010000110100110100010010
octave:37> u32
u32 =
01111101110100100011100010001100 00000000000000000000000000000000
01101110001010010011001010000101 00000000000000000000000000000000
octave:38> u32t
u32t =
01111101110100100011100010001100 00000000000000000000000000000000
01101110001010010011001010000101 01010111010110010101100100101001
octave:39> s64
s64 =
0010111010011111101011110001110101000010001110001100100000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
octave:40> s64t
s64t =
0010111010011111101011110001110101000010001110001100100000000000 0100110010110010101100011000100101111001100001000111100000000000
1000010011110111110110001111110001000000110100101011010000000000 0001001101110100101111011111001010101101000010111010100000000000
octave:41> u64
u64 =
0010111000101000100110001001100001111111010100110000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
octave:42> u64t
u64t =
0010111000101000100110001001100001111111010100110000000000000000 0001000101000011111110000010001110011011000010110001100000000000
0011001100101100000100111000100000101111100010001110000000000000 0101101110101110011011010010001010110110100111110001000000000000
Dmitri.