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_N_strict :
forall x,
(x - IZR (Zfloor x) <> /2)%R ->
(Rabs (x - IZR (Znearest x)) < /2)%R.