anchor.diff:  
   handle_changes_req(#httpd{method='GET',path_parts=[DbName|_]}=Req, Db) ->
       {FilterFun, EndFilterFun} = make_filter_funs(Req, Db),
  -    {ok, Info} = couch_db:get_db_info(Db),
  -    Seq = proplists:get_value(update_seq, Info),
       {Dir, StartSeq} = case couch_httpd:qs_value(Req, "descending", "false") of 
           "false" -> 
               {fwd, list_to_integer(couch_httpd:qs_value(Req, "since", "0"))}; 
           "true" -> 
  -            {rev, Seq}; % super big value, should use current db seq
  +            {rev, 1000000000000000}; % super big value, should use current db seq
           _Bad -> throw({bad_request, "descending must be true or false"})
       end,
       ResponseType = couch_httpd:qs_value(Req, "feed", "normal"),
  
positive.code:             get_rest_db_updated() % clean out any remaining update messages
          end;
      true ->
          CurrentEtag = couch_httpd:make_etag(Info),
          couch_httpd:etag_respond(Req, CurrentEtag, fun() ->
              % send the etag
  
negative.code:         {ok, {Db, Seq, Prepend, FilterFun, Resp, nil, IncludeDocs}};
      _ ->
          send_chunk(Resp, [Prepend, ?JSON_ENCODE(
              changes_row(Db, Seq, Id, Results, Rev, IncludeDocs))]),
          {ok, {Db, Seq, <<",\n">>, FilterFun, Resp, nil, IncludeDocs}}
      end.
  
  changes_row(Db, Seq, Id, Results, Rev, true) ->
      {[{seq,Seq},{id,Id},
          {changes,Results}] ++
          couch_httpd_view:doc_member(Db, Id, Rev)};
  changes_row(_, Seq, Id, Results, _, false) ->
      {[{seq,Seq},{id,Id},
          {changes,Results}]}.
  
  send_changes(Req, Resp, Db, Dir, StartSeq, Prepend, ResponseType, FilterFun, End) ->
      Style = list_to_existing_atom(
  