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

            guard let currentCoachMark = currentCoachMark else { return }

            coachMarksViewController.hide(coachMark: currentCoachMark, at: previousIndex) {
                self.delegate?.didHide(coachMark: self.currentCoachMark!, at: self.currentIndex - 1)
                self.showOrStop()
            }
        } else {

                                    afterSizeTransition: (change == .size), at: currentIndex)
        }

        // The delegate might have paused the flow, we check whether or not it's
        // the case.
        if !self.paused {
            if coachMarksViewController.instructionsRootView.bounds.isEmpty {
