Definition round_sign_DN s l :=
  match l with
  | loc_Exact => false
  | _ => s
  end.

(* Specifications: *)
Theorem inbetween_int_DN_sign : forall x m l, inbetween_int m (Rabs x) l -> Zfloor x = cond_Zopp (Rlt_bool x 0) (cond_incr (round_sign_DN (Rlt_bool x 0) l) m).
Theorem inbetween_float_DN_sign : forall x m l, let e := canonic_exp beta fexp x in inbetween_float beta m e (Rabs x) l -> round beta fexp Zfloor x = F2R (Float beta (cond_Zopp (Rlt_bool x 0) (cond_incr (round_sign_DN (Rlt_bool x 0) l) m)) e).
Theorem inbetween_int_DN_sign : forall x m l, inbetween_int m (Rabs x) l -> Zfloor x = cond_Zopp (Rlt_bool x 0) (cond_incr (round_sign_DN (Rlt_bool x 0) l) m).
Theorem inbetween_float_DN_sign : forall x m l, let e := canonic_exp beta fexp x in inbetween_float beta m e (Rabs x) l -> round beta fexp Zfloor x = F2R (Float beta (cond_Zopp (Rlt_bool x 0) (cond_incr (round_sign_DN (Rlt_bool x 0) l) m)) e).