             guard let currentCoachMark = currentCoachMark else { return }
 
             coachMarksViewController.hide(coachMark: currentCoachMark, at: previousIndex) {
-                self.delegate?.didHide(coachMark: self.currentCoachMark!, at: self.currentIndex - 1)
+                if self.currentIndex > 0 {
+                    self.delegate?.didHide(coachMark: self.currentCoachMark!,
+                                           at: self.currentIndex - 1)
+                }
                 self.showOrStop()
             }
         } else {

            return
        }

        if let currentCoachMark = currentCoachMark {
            delegate?.willHide(coachMark: currentCoachMark, at: currentIndex - 1)
        }


    internal func createAndShowCoachMark(afterResuming: Bool = false,
                                         changing change: ConfigurationChange = .nothing) {
        if disableFlow { return }
        if currentIndex < 0 { return }

        if !afterResuming {
            guard delegate?.willLoadCoachMark(at: currentIndex) ?? false else {
