We present an efficient algorithm for obtaining a canonical system of Jordan chains for an n × n regular analytic matrix function A( λ) that is singular at the origin. For any analytic vector function b( λ), we show that each term in the Laurent expansion of A( λ) −1 b( λ) may be obtained from the previous terms by solving an ( n + d) × ( n+ d) linear system, where d is the order of the zero of det A( λ) at λ = 0. The matrix representing this linear system contains A(0) as a principal submatrix, which can be useful if A(0) is sparse. The last several iterations can be eliminated if left Jordan chains are computed in addition to right Jordan chains. The performance of the algorithm in floating point and exact (rational) arithmetic is reported for several test cases. The method is shown to be forward stable in floating point arithmetic.