Smooth Camera Rotation with Deceleration

I’ve been trying to find a solution to creating a camera deceleration when orbiting around a scene. For an application that I am developing for the IOS.

I have a make shift approach that uses the Lerp function but the transition is not smooth enough like some transitions that you see on native IOS application.

The example code is below:

void Update()
    {
        if (Input.touchCount > 0)
        {
            if (Input.GetTouch(0).phase == TouchPhase.Moved)// */ Input.GetMouseButton(0))
            {
                if (target)
                {
                    CamOrbit();
                }
            }
            if (Input.GetTouch(0).phase == TouchPhase.Ended) // */Input.GetMouseButtonUp(0))
            {
                InputX = Input.GetAxis("Mouse X");
                InputY = -Input.GetAxis("Mouse Y");    
                isMoving = true;
                current = 1;
            }
        }
    }
    void LateUpdate()
    { 
        if (isMoving)
        {    
            Quaternion rotation;
            current += Time.deltaTime;

            x += -InputX * xSpeed * 0.02f;
            y += -InputY * ySpeed * 0.02f;

            rotation = Quaternion.Euler(y, x, 0);

            transform.rotation = Quaternion.Lerp(rotation, CamOrbit(), 100f * Time.deltaTime);

            if (current > 1.2)
                isMoving = false;
        }

    }

    private Quaternion CamOrbit()
    {
        x += -Input.GetAxis("Mouse X") * xSpeed * 0.02f;
        y -= -Input.GetAxis("Mouse Y") * ySpeed * 0.02f;
    
        rotation = Quaternion.Euler(y, x, 0);
        transform.rotation = rotation;

        return rotation;
}

I tried using Slerp, but the effect was more or less the same, I know I might have used it in an incorrect way, But i do hope someone can shed some light on this.

Thanks, Shanaire.

I came to a solution to this answer.

The Solution is as follows. Just if anyone else has a similar issue.

    void Update()
    {
        if (Input.touchCount > 0)
        {
            if (Input.GetTouch(0).phase == TouchPhase.Moved)// */ Input.GetMouseButton(0))
            {
                if (target)
                {
                    newRotation = CamOrbit();
                }
            }
        }
    }
    void LateUpdate()
    {
        ApplyNewRotation(newRotation, Damping);
    }

    private Quaternion CamOrbit()
    {
        x += -Input.GetAxis("Mouse X") * xSpeed * 0.02f;
        y -= -Input.GetAxis("Mouse Y") * ySpeed * 0.02f;

        rotation = Quaternion.Euler(y, x, 0);

        return rotation;

    }

    void ApplyNewRotation(Quaternion NewRotation, float Damping)
    {
        transform.rotation = Quaternion.Lerp(transform.rotation, NewRotation, Time.deltaTime * Damping);
    }