Whether a misfire occurred is judged based on a comparison between
diagnosis data that indicates a variation of an engine rotation speed and
a threshold based on engine operating conditions. The misfire judgment is
canceled based on a result of a comparison between data indicating an
average correlation between the diagnosis data and the threshold, and a
threshold for cancellation judgment.