anchor.diff:  %% @spec first(erlang:iodata()) -> { ok, Response }  |  
   %%   { error, Reason } 
   %%  Reason = iolist()
  -%%  Response = iolist()
  +%%  Response = integer()
   %% @doc Return the date of the first data sample in an RRA within an
   %%       RRD. Check 
   %% [http://oss.oetiker.ch/rrdtool/doc/rrdfirst.en.html rrdfirst]
  -first      (Args) when is_list(Args) -> do(first,      Args).
  +first       (Args) when is_list(Args) -> 
  +  case do(first,       Args) of
  +    { error, Reason } -> { error, Reason };
  +    { ok, [[Response]] } -> { ok, erlang:list_to_integer(Response) }
  +  end.
   
   %% @spec info(erlang:iodata()) -> { ok, Response }  |  
   %%   { error, Reason } 
  
positive.code: %% @spec last(erlang:iodata()) -> { ok, Response }  |  
  %%   { error, Reason } 
  %%  Reason = iolist()
  %%  Response = iolist()
  %% @doc    Return the date of the last data sample in an RRD. Check 
  %% [http://oss.oetiker.ch/rrdtool/doc/rrdlast.en.html rrdlast]
  last       (Args) when is_list(Args) -> do(last,       Args).
  
  %% @spec lastupdate(erlang:iodata()) -> { ok, Response }  |  
  %%   { error, Reason } 
  
negative.code: 
  %% @hidden
  init(RRDToolCmd) -> 
  process_flag(trap_exit, true),
  Port = erlang:open_port({spawn, RRDToolCmd}, [ {line, 10000}, eof, exit_status, stream ] ),
  {ok, #state{port = Port}}.
  
  %%
  %% handle_call
  %% @hidden
  handle_call({do, Action, Args }, _From, #state{port = Port} = State) ->
  Line = [ erlang:atom_to_list(Action), " ", Args , "\n"],
  port_command(Port, Line),
  case collect_response(Port) of
          {response, Response} -> 
              {reply, { ok, Response }, State};
          { error, timeout } ->
  