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