Rotate Character after a certain angle

I am working on a top-down game. I have a look at script which is basically supposed to turn the character based on a crosshair but I want the character to turn only after a certain angle as in the character should turn let’s say 90 degrees to the right if the LookAtAngle goes beyond 45 degrees.
LookAtAngle = Quaternion.FromToRotation(transform.forward, mLookAtDirection);

I’ve commented to this code to help explain what is going on, I hope it helps:

	float zoneSize = 90f; // every 90 degrees we turn
	float rotSpeed = 180f; // 180 degrees a second
    
    void Update()
    {
		// find angle (angle 0 points right and continues counter-clockwise)
		Vector3 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
		float angle = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;

		// adjust angle so we can measure easier
		// instead of trying -45 to 45, it is 0 to 90
		angle += zoneSize / 2f;

		// make sure angle is between 0 and 360
		if (angle < 0) { angle += 360; }

		// take the angle and clamp it to zoneSize increaments
		angle = Mathf.FloorToInt(angle / zoneSize) * zoneSize;

		// set up a taret rotation
		Quaternion targetRotation = Quaternion.Euler(0f, 0f, angle);
		
		// then lerp to target
		transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRotation, rotSpeed * Time.deltaTime);
	}

This would be a script on your character, and assume your character at rotation 0 is facing right.