A controller for controlling a valve timing of an engine that calculates a duty
correction value using an arithmetic expression reflecting a physical model, which
is associated with torque applied to an exhaust valve camshaft, a spring force
exerted by an advancing spring for varying a rotational phase of the exhaust valve
camshaft, and hydraulic pressure of operating oil. When the coolant temperature
is lower than 80 C., the controller sets the duty correction value to zero.
The duty correction value reflecting all the fluctuation factors of the engine
is easily obtained without using a map requiring a large amount of data.