- // Singularity encountered, expand basis into series
- e = basis.series(r, order, options);
- } else {
- // Basis is a series
- e = basis;
+ // Is the expression of type 0^something?
+ if (!must_expand_basis && !basis.subs(r).is_zero())
+ return basic::series(r, order, options);
+
+ // Singularity encountered, is the basis equal to (var - point)?
+ if (basis.is_equal(r.lhs() - r.rhs())) {
+ epvector new_seq;
+ if (ex_to<numeric>(exponent).to_int() < order)
+ new_seq.push_back(expair(_ex1(), exponent));
+ else
+ new_seq.push_back(expair(Order(_ex1()), exponent));
+ return pseries(r, new_seq);