The getInt(int) implementations in NumberArrayData and LongArrayData just casts the element value to int, which is not correct JS semantics. What we should do is call JSType.toInt32. This can be seen by running the following script: x = [0xffffffff, 0.5] // second element makes this a double array print(x[0] & -10) y = 0xffffffff print(y & -10) Expected output: -10 -10 Actual output: 2147483638 -10