                 }
             }
             setTargetContentOffset(calculatedOffSet)
-        case .nonStopToSection, .nonStopToCell, .nonStopTo:
+        case let .nonStopToCell(withResistance: resistance):
+            let diff = abs(theTargetContentOffset - contentOffset)
+            var calculatedOffSet: CGFloat = 0
+            let targetSection = calendarLayout.sectionFromOffset(theTargetContentOffset)
+            let diffResistance = diff * resistance
+
+            if scrollViewShouldStopAtEnd(theTargetContentOffset) {
+                calculatedOffSet = theTargetContentOffset
+            } else {
+                let interval = calendarLayout.cellCache[targetSection]![0].4
+                
+                let recalculateOffset = {(diff: CGFloat, interval: CGFloat) -> CGFloat in
+                    let recalcOffsetAfterResistanceApplied = theTargetContentOffset - diff
+                    print("interval: \(modf(recalcOffsetAfterResistanceApplied / interval).1)")
+
+                    return modf(recalcOffsetAfterResistanceApplied / interval).1 > 0.5 ?
+                        ceil(recalcOffsetAfterResistanceApplied / interval) * interval :
+                        floor(recalcOffsetAfterResistanceApplied / interval) * interval
+                }
+                
+                
+                calculatedOffSet = recalculateOffset(diffResistance, interval)
+            }
+            
+            setTargetContentOffset(calculatedOffSet)
+        case .nonStopToSection, .nonStopTo:
             let diff = abs(theTargetContentOffset - contentOffset)
             let targetSection = calendarLayout.sectionFromOffset(theTargetContentOffset)
             var calculatedOffSet = contentOffset

                }
                setTargetContentOffset(calculatedOffSet)
            case let .nonStopToCell(resistance):
                let interval = calendarLayout.cellCache[targetSection]![0].4
                let diffResistance = diff * resistance
                if scrollDirection == .horizontal {
                    if scrollViewShouldStopAtBeginning() {
                        calculatedOffSet = 0
                    } else if scrollViewShouldStopAtEnd(calculatedOffSet) {
                        calculatedOffSet = theTargetContentOffset
                    } else {
                        calculatedOffSet = recalculateOffset(diffResistance, interval)
                    }
                } else {

                        calculatedOffSet = scrollViewShouldStopAtEnd(calculatedOffSet) ? theTargetContentOffset : theTargetContentOffset - diffResistance
                        stopSection = calendarLayout.sectionFromOffset(calculatedOffSet)
                    } else {
                        calculatedOffSet = scrollViewShouldStopAtBeginning ? 0 : theTargetContentOffset + diffResistance
                        stopSection = calendarLayout.sectionFromOffset(calculatedOffSet)
                    }
                    let pathPoint = CGPoint( x: targetContentOffset.pointee.x, y: calculatedOffSet)
