     { :lists.reverse(acc), [] }
   end
 
+  defp do_split_reverse([h|t], counter, acc) when counter > 0 do
+    do_split_reverse(t, counter - 1, [h|acc])
+  end
+
+  defp do_split_reverse(list, 0, acc) do
+    { :lists.reverse(list), acc }
+  end
+
+  defp do_split_reverse([], _, acc) do
+    { [], acc }
+  end
+
   ## split_while
 
   defp do_split_while([h|t], fun, acc) do


  @doc """
  Takes the items at the beginning of `collection` while `fun` returns `true`.
  Expects an ordered collection.

  ## Examples



  @doc """
  Drops the first `count` items from `collection`.

  A negative value `count` can be given, which means
  the collection is enumerated once to retrieve the
  proper index and the remaining of the calculation
  is done from the end.

  ## Examples

