anchor.diff:                           "the version has to increase by one"),
                       ?WARN(OldEpoch + 1 =:= NewEpoch, 
                             0 =:= NewVersion,
  -                         "the version has to be zero after an epoch update"),
  +                         "the version has to be zero after an epoch update: " 
  +                             ++ atom_to_list(Writer)),
                       % check that the id does not change
  -                    ?WARN(OldId =/= NewId, false, "the id may never change"),
  +                    ?WARN(OldId =/= NewId, 
  +                          false, 
  +                          "the id may never change: " 
  +                              ++ atom_to_list(Writer)),
                       % check for correct behavior for the remaining fields
                       ?WARN(OldOwner =/= NewOwner, 
                             EpochUpdate, 
  -                          "the owner changed without an epoch update"),
  +                          "the owner changed without an epoch update: " 
  +                              ++ atom_to_list(Writer)),
                       ?WARN(OldRange =/= NewRange, 
                            EpochUpdate,
  -                         "the range changed without an epoch update"),
  +                         "the range changed without an epoch update: " 
  +                             ++ atom_to_list(Writer)),
                       ?WARN(OldAux =/= NewAux, 
                            EpochUpdate,
  -                         "the aux changed without an epoch update"),
  +                         "the aux changed without an epoch update: " 
  +                             ++ atom_to_list(Writer)),
                       ?WARN(OldTimeout =/= NewTimeout, 
  -                         VersionUpdate,
  -                         "the timeout changed without a version update"),
  +                         VersionUpdate orelse EpochUpdate,
  +                         "the timeout changed without a version update: " 
  +                             ++ atom_to_list(Writer)),
                       ?WARN(OldTimeout =/= NewTimeout, 
                            OldTimeout < NewTimeout,
  -                         "the timeout changed without a version update"),
  +                         "the new timeout is not newer than the old: " 
  +                             ++ atom_to_list(Writer)),
                       {true, null};
                   % epoch and/or version did not match: give useful error message
                   #lease{id = Id0, epoch = E0, owner = O0, range = R0, aux = Aux0, 
  
positive.code:                     log:pal("re-write in CC:~n~w~n~w~n~w~n~w~n~w~n", 
                              [Current, Next, Old, New, Writer]),
                      {true, null};
                  % check that epoch and version match with Old
                  #lease{epoch = E0, version = V0} when  E0 =:= OldEpoch andalso V0 =:= OldVersion ->
                      % @todo sanity check with warnings: protocol was implemented correctly
                      EpochUpdate = (NewEpoch =:= OldEpoch + 1) andalso (NewVersion =:= 0),
  
negative.code: -include("scalaris.hrl").
  -include("record_helpers.hrl").
  
  -define(WARN(BOOL, BOOL2, TEXT),
          if
              BOOL andalso not (BOOL2) ->
                  log:log("loncq: " ++ TEXT);
  