Problem with irregular rotation

Halp! Need rotate object on ,to example,720 deg by 3 sec:

timer += Time.deltaTime;
transform.Rotate(new Vector3((angle / duration) * Time.deltaTime, 0, 0));
if (timer >= duration)
{
        transform.Rotate(new Vector3(-((timer - duration) * angle / duration), 0, 0));
        GameManager.Instance.GameStatus = GameState.Play;
        state = WheelState.Idle;
        FinishSpin();
}

Its regular rotation:every second object rotated on (angle/duration) degrees.

But if rotation is irregular,object will rotated by incorrect degrees:

timer += Time.deltaTime;
transform.Rotate(new Vector3((angle*2-angle*2 / duration)*timer * Time.deltaTime, 0, 0));// or something , such as ln(x)/exp(x)/gauss function

if (timer >= duration)
{
        GameManager.Instance.GameStatus = GameState.Play;
        state = WheelState.Idle;
        FinishSpin();
}

I find decision :
http://studio.openxcell.com/create-spin-wheel-unity-3d.html