         }
 
         if let buttons = buttons {
-            circle.fillAnimation(duration, startAngle: -90 + Float(360 / buttons.count) * Float(sender.tag)) { [weak self] in
+            let step = getArcStep()
+            circle.fillAnimation(duration, startAngle: -90 + startAngle + step * Float(sender.tag)) { [weak self] in
                 self?.buttons?.forEach { $0.alpha = 0 }
             }
             circle.hideAnimation(0.5, delay: duration) { [weak self] in

        addTarget(self, action: #selector(CircleMenu.onTap), for: newEvent)
    }

    // MARK: actions
    
    private var isBounceAnimating: Bool = false

    @IBInspectable open var distance: Float = 100
    /// Delay between show buttons
    @IBInspectable open var showDelay: Double = 0
    /// Start angle of the circle
    @IBInspectable open var startAngle: Float = 0
    /// End angle of the circle
    @IBInspectable open var endAngle: Float = 360

    // Pop buttons radius, if nil use center button size
    open var subButtonsRadius: CGFloat?
    
