Re: f(f(x))=-x

コメント欄とか無いようなのでここで。
これなんですが、x=-1のときf(x)=0となって破綻しませんか?
これを回避するには、id:succedさんのように正負に応じて値を1ずらす方向を変える必要がありそうです。

勘違いでした。f(x)の中ではxではなくてa(=|x|)を使っているので、id:succeedさんの解答と等価になりますね。