# Why Not a Function #16: interval-in

```
(require '[clj-time.core :as t])
(defn interval-in
[start end in]
(if (t/after? end start)
(in (t/interval start end))
(- (in (t/interval end start)))))
```

`interval-in`

serves as a wrapper around `clj-time`

’s `interval`

. The problem with the original `interval`

is that it does not return negative values. It simply throws an exception. Our alternative returns a negative number if `start`

is after `end`

.

```
(def now (t/now))
=> #'user/now
(def hour-later (t/plus now (t/hours 1)))
=> #'user/hour-later
(interval-in now hour-later t/in-hours)
=> 1
(interval-in hour-later now t/in-hours)
=> -1
```

Written on April 1, 2020