Rotating object in intervals of fixed distance

I am making a 2D top down game, where the player has a sword. The sword rotates around the player, pointing at the mouse. The sword rotate smoothly around the player, but what i really what is a kinda “stutter” effect. An analogy to explain further would be how a analog clock ticks around. So the sword still rotates around the player, but instead of smoothly, it rotates in a lagging kinda way. I hope it makes, sense as i am having trouble formulating what i need.

This is the script i have so far:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WeaponParent: MonoBehaviour
{
    public Vector2 pointerPosition { get; set; }
    public Animator animator;
    public float animDelay = 0.1 f;
    private bool attackBlocked;
    public bool isAttacking { get; private set; }
    public GameObject playerParent;

    public void ResetIsAttacking()
    {
        isAttacking = false;
    }

    void Update()
    {
        if (isAttacking) return;
        Vector2 direction = (pointerPosition - (Vector2) transform.position).normalized;
        transform.right = direction;
        Vector2 scale = transform.localScale;
        if (direction.x < 0)
        {
            scale.y = -1;
        }
        else if (direction.x > 0)
        {
            scale.y = 1;
        }
        transform.localScale = scale;
    }

    public void Attack()
    {
        if (attackBlocked) return;
        animator.SetTrigger("Attack");
        isAttacking = true;
        attackBlocked = true;
        StartCoroutine(DelayAttack());
    }

    IEnumerator DelayAttack()
    {
        yield
        return new WaitForSeconds(animDelay);
        attackBlocked = false;
    }

}

How would you approach this? Ill happily take any advice.

Personally i would do something like this

public class RotateAttackExample : MonoBehaviour 
{
    [SerializeField]
    [Min(0)]
    // the time interval between rotations
    private float timeInterval;
    
    [SerializeField]
    [Range(-360 , 360)]
    // how much we rotate per rotation
    private float anglePerRotation;
    
    [SerializeField]
    // the transform of the gameobject we want to rotate
    private Transform transformToRotate;
    
    private Coroutine crtHandle;
    
    private float currrentAngle;
    
    private float currentTimer;
    
    private void Update()
    {
        // we increment a timer
        currentTimer += Time.deltaTime;
        
        // as long as we dont exceed the time interval , we skip
        if(currentTimer < timeInterval)
            return;
        
        // here we execute the rotation , first we reset the timer
        currentTimer -= timeInterval; // you can also set to 0 , but that can lead to ignoring leftover in the timer
        
        // incase we have a rotation already happening , we interrupt it to avoid overlap
        if(crtHandle != null)
        {
            StopCoroutine(crtHandle);
        }
        
        // start the animation coroutine and save a handle to it
        crtHandle = StartCoroutine(CrtDoAttackRotation());      
    }
    
    private IEnumerator CrtDoAttackRotation()
    {   
        // TODO : do your animation stuff , for now i just made it snap to wanted rotation

        // first we update the current angle
        currrentAngle += anglePerRotation
        currentAngle %= 360;
      
        // assign it to the transform
        transformToRotate.rotation = Quaternion.Euler(0 , 0 , currrentAngle);
        // ... more code maybe ...
        // mark the animation as done
        crtHandle = null;
    }
}