Oddly Even, Positively Negative Given N, output the Nth term of this infinite sequence:

-1 2 -2 1 -3 4 -4 3 -5 6 -6 5 -7 8 -8 7 -9 10 -10 9 -11 12 -12 11 ... etc.


N may be 0-indexed or 1-indexed as you desire.

For example, if 0-indexed then inputs 0, 1, 2, 3, 4 should produce respective outputs -1, 2, -2, 1, -3.

If 1-indexed then inputs 1, 2, 3, 4, 5 should produce respective outputs -1, 2, -2, 1, -3.

To be clear, this sequence is generated by taking the sequence of positive integers repeated twice

1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 ...


and rearranging each pair of odd numbers to surround the even numbers just above it

1 2 2 1 3 4 4 3 5 6 6 5 7 8 8 7 9 10 10 9 11 12 12 11 ...


and finally negating every other term, starting with the first

-1 2 -2 1 -3 4 -4 3 -5 6 -6 5 -7 8 -8 7 -9 10 -10 9 -11 12 -12 11 ...


The shortest code in bytes wins.
Python 2, 23 bytes



lambda n:~n/2+n%2*(n|2)


Odd inputs give roughly n/2, even ones roughly -n/2. So, I started with -n/2+n%2*n and tweaked from there. 

Try it online!