Section Znearest.
(** Roundings to nearest: when in the middle, use the choice function *)
Variable choice : Z -> bool.
Definition Znearest x :=
match Rcompare (x - IZR (Zfloor x)) (/2) with
| Lt => Zfloor x
| Eq => if choice (Zfloor x) then Zceil x else Zfloor x
| Gt => Zceil x
end.
Global Instance valid_rnd_N : Valid_rnd Znearest.

Theorem Znearest_half :
forall x,
(Rabs (x - IZR (Znearest x)) <= /2)%R.