Dorun can be called as (dorun n coll). When called this way, dorun will force n+1 elements from coll, which seems unintuitive. I can't necessarily call this a defect, though. It doesn't deviate from the documented behavior because there is no documented behavior -- the two-argument arity is not mentioned in the docstring.
`
user=> (defn printing-range [n] (lazy-seq (println n) (cons n (printing-range (inc n)))))
'user/printing-range
user=> (dorun 0 (printing-range 1))
1
nil
user=> (dorun 3 (printing-range 1))
1
2
3
4
nil
`