I thought that you might want to handle the negative-exponent case, but I didn't include it because the quotient and remainder need to be treated separately. To restore the original variable, the exponents of the remainder need to be reduced in the negative direction, but the exponents of the quotient do not.
So, add this procedure:
QuoRem:= proc(n, d, x::name)
local X, ND, R, m, q, r;
(ND,R):= FractionalExponentAdjuster([n,d], x, X);
m:= min(0, ldegree~(ND, X));
q:= quo(expand(ND/~X^m), X, r);
#Remainder gets downshifted, but quotient does not:
To use it, simply do
(qNSR, rNSR):= QuoRem(NSR, deltaa, q);
expand(qNSR*deltaa + rNSR - NSR); #Test---should get 0
And, no, it was not "an easy question".