このコードは、x % 2 == 1 を使用して値が負数なのか確かめていますが、負数 (たとえば、(-5) % 2 == -1) なので機能しません。 奇数チェックを意図しているなら、x & 1 == 1 または x % 2 != 0 を使うことを検討してください。
x % 2 == 1
(-5) % 2 == -1
x & 1 == 1
x % 2 != 0