A method of detecting an engine malfunction such as a misfire includes
determining engine speed values at each of a plurality of measurement
angular positions, heterodyning the engine speed values with sine and
cosine functions indexed in the angular domain, passing the heterodyned
results through a low pass filter, and computing the resulting magnitude
from the resulting two vectors. An apparatus for detecting an engine
malfunction, such as a misfire, includes an engine speed analyzer, a
multiplier, and a low pass filter.