I think that it is a bad idea that (rat)coeff returns zero, if it can't
make the coefficient explicit, it should rather return 'ratcoeff...:
(C1) ratcoeff((1+x)^k,x,2);
(D1) 0
(C2) ratcoeff(x^k,x,2);
(D2) 0
because this way, it is impossible to determine from the output whether
the coefficient is zero or it could not be determined...
Martin