Right now we are simply using:
const auto q_trunc {q > zero ? floor(q) : ceil(q)};
r = lhs - (q_trunc * rhs);
We should be able to scale the lhs and rhs significands, and compute the integer modulo, followed by constructing the resultant decimal type when possible