anchor.diff:  %% magic number that indicates a bookshelf file.
   -define(BKSF_IND, 16#0DDBA11).
   
  -%% The total header size
  --define(BKSF_HEADER_SIZE, (4 + 14 + 32)).
  +%% Header Information
  +-define(BKSF_HEADER_SIZE, (4 + 2)).
  +
  +-define(BKSF_VERSION, 1).
  +-define(BKSF_HEADER_DETAIL_SIZE_1, (14 + 32)).
  +
  +-define(CURRENT_HEADER_SIZE,
  +        (?BKSF_HEADER_SIZE + ?BKSF_HEADER_DETAIL_SIZE_1)).
   
   %% This FILE_PAD is appended to the front of files.
  --define(FILE_PAD, <<?BKSF_IND:32,
  +-define(FILE_PAD, <<?BKSF_IND:32, 0:16,
                       0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,
                       0,0,0,0,0,0,0,0,0,0,
  
positive.code: -spec file_md5(file:io_device()) -> {ok, MD5::binary()}.
  file_md5(File) ->
      case file:read(File, ?BKSF_HEADER_SIZE) of
          {ok, <<?BKSF_IND:32,
                 _TimeStamp:14/binary, MD5:32/binary>>} ->
              {ok, MD5};
          _ ->
              {error, invalid_file}
  
negative.code: obj_close({File, Ctx}) ->
      FinalMD5 = erlang:md5_final(Ctx),
      %% The first four bytes are the BKSF indicator
      {ok, 0} = file:position(File, 0),
      Timestamp = create_timestamp(),
      MD5 = to_hex(FinalMD5),
      file:write(File, <<?BKSF_IND:32/integer,
                         ?BKSF_VERSION:16/integer,
                         Timestamp:14/binary,
                         MD5:32/binary>>),
      case file:close(File) of
          ok  ->
              {ok, FinalMD5};
  