     }
     
     func didTapSet() {
+        delegate?.sambagDatePickerDidSet(self, result: result)
+    }
+    
+    func didTapCancel() {
+        delegate?.sambagDatePickerDidCancel(self)
+    }
+    
+    fileprivate var result: SambagDatePickerResult {
         var result = SambagDatePickerResult()
         result.month = SambagMonth(rawValue: monthWheel.selectedIndexPath.row + 1)!
         result.year = Int(yearWheel.items[yearWheel.selectedIndexPath.row])!
         result.day = dayWheel.selectedIndexPath.row + 1
-        delegate?.sambagDatePickerDidSet(self, result: result)
-    }
-    
-    func didTapCancel() {
-        delegate?.sambagDatePickerDidCancel(self)
+        return result
     }
 }
+
+extension SambagDatePickerViewController: WheelViewControllerDelegate {
+    
+    func wheelViewController(_ wheel: WheelViewController, didSelectItemAtRow row: Int) {
+        let suggested = suggestor.suggestedResult(from: result)
+        
+        guard suggested != result else {
+            return
+        }
+        
+        if suggested.month != result.month {
+            monthWheel.selectedIndexPath.row = suggested.month.rawValue - 1
+        }
+        
+        if suggested.day != result.day {
+            dayWheel.selectedIndexPath.row = suggested.day - 1
+        }
+        
+        if suggested.year != result.year {
+            yearWheel.selectedIndexPath.row = suggested.year - 1
+        }
+    }
+}

    
    public weak var delegate: SambagDatePickerViewControllerDelegate?
    public var theme: SambagTheme = .dark
    
    public convenience init() {
        self.init(nibName: nil, bundle: nil)

        }
        
        monthWheel = WheelViewController()
        monthWheel.delegate = self
        monthWheel.items = items
        monthWheel.gradientColor = attrib.contentViewBackgroundColor
        monthWheel.stripColor = attrib.stripColor
