             (if (< index data-length)
               (let [char (nth data index)
                     next-char (if (< index (- data-length 1))
-                                (nth data (+ index 1))
+                                (nth data (inc index))
                                 nil)
                     str-char (str char)]
                 (case state


                    "\n"
                    (if in-quoted-field
                      (recur (+ index 1)
                             :in-field
                             in-quoted-field
                             (str field-buffer char)
                             rows)
                      (recur (+ index 1)
                             :end-line
                             in-quoted-field
                             ""
                             (conj-in rows last-row-index field-buffer)))

                    (recur (+ index 1)
                           :in-field
                           in-quoted-field
                           (str field-buffer char)


                    separator
                    (if in-quoted-field
                      (recur (inc index)
                             :in-field
                             in-quoted-field
                             (str field-buffer char)
                             rows)
                      (recur (inc index)
                             :end-field
                             in-quoted-field
                             ""
