Crazy but Rational Bases
Python 2, 42 39 bytes



n,a,b=input()
while n:print n%a;n=n/a*b


Try it online!

Thanks to @xnor for finding the shorter form.

Obsolete version (42 bytes):



f=lambda n,a,b:n and[n%a]+f(n/a*b,a,b)or[]


Try it online!

Parameters: input, numerator (with sign) and denominator.

Returns an array, lowest digit first.

This just works because the division and modulo in Python follows the sign of the denominator, so we don't have to care about same signs explicitly.

Test case output:

f(7, 4, 3)       == [3, 3]
f(-42, -2, 1)    == [0, -1, -1, -1, -1, -1, -1]
f(-112, -7, 3)   == [0, -1, 0, -5, -6]
f(1234, 9, 2)    == [1, 4, 6, 3, 2]
f(60043, -37, 3) == [-8, -22, -14, -33]