Daniel Lichtblau already mentioned that! Thanks! Here's what you can do Sasha:
altQuotientRemainder[m_Integer, n_Integer?Negative] := -QuotientRemainder[-m, n];
altQuotientRemainder[m_Integer, n_Integer] := QuotientRemainder[m, n]
altQuotientRemainder[m, n] /. {m -> 17, n -> -5}
(* {-3, 2} *)
Also, I should probably clarify that I'm not saying this implementation is "right" in any sense. Either of your other implementations is just fine as far as I'm concerned. You asked for alternatives, and since QuotientRemainder
is already built in and gives you almost everything you want, using it seemed like a reasonable alternative.