A complete decoder is one that guarantees to decode a received vector to its nearest codeword. For the design of an efficient complete decoding algorithm, storage demand and decoding complexity are two essential factors. Along this consideration, the Zero-Guards algorithm provides a significant improvement as the number of vectors required to be stored has been made much less than what is required by the conventional standard array decoding. When being applied to certain block codes, however, it may be inefficient when code length is short. At this background, a new step-by-step complete decoding algorithm for cyclic codes is proposed in this work. Based on a newly devised transfer function, our algorithm can achieve a better decoding efficiency than the Zero-Guards algorithm, while keeping a smaller number of vectors for most of the cyclic codes examined.