         :args (s/cat :name ::name :day ::date :hol ::date)
         :ret ::holiday)
 
-(defn int-year [year]
-  (core/int (core/year year)))
-
 (defn new-years-day [year]
-  (LocalDate/of (int-year year) 1 1))
+  (LocalDate/of (core/int (core/year year)) 1 1))
 
 (defn new-years-day-holiday [year]
-  (let [day (new-years-day (int-year year))
+  (let [day (new-years-day (core/int (core/year year)))
         hol (cond-> day (weekend? day) (first-named-day-from DayOfWeek/MONDAY))]
     (holiday "New Year's Day" day hol)))
 

  ;; TODO: From what year does this algorithm makes sense from, need
  ;; to throw an exception outside this range.
  [year]
  (let [year (int-year year)
        a (mod year 19)
        b (quot year 100)
        c (mod year 100)

        :ret ::holiday)

(defn boxing-day [year]
  (LocalDate/of (core/int (core/year year)) 12 26))

(s/fdef boxing-day
        :args (s/cat :year ::year)
        :ret ::date)

(defn boxing-day-holiday [year]
  (let [day (boxing-day (core/int (core/year year)))
        hol (cond-> day
              (#{DayOfWeek/SATURDAY DayOfWeek/SUNDAY} (.getDayOfWeek day)) (.plusDays 2))]
    (holiday "Boxing Day" day hol)))
