Ltac zero_or_not a :=
  destruct (Z.eq_dec a 0);
  [subst; rewrite ?Zmod_0_l, ?Zdiv_0_l, ?Zmod_0_r, ?Zdiv_0_r;
   auto with zarith|].

Lemma Z_div_nz_opp_full : forall a b:Z, b <> 0 -> a mod b <> 0 -> (-a)/b = -(a/b)-1.