anchor.diff:      begin
         if Assigned(cmdmsg.Profile.OnProgress) then
         begin
  -        try
  -          cmdmsg.Profile.OnProgress(cmdmsg.Profile, cmdmsg, progress);
  -        finally
  -          cmdmsg.ReleaseData;
  +        if cmdmsg.Profile.SyncReply and cmdmsg.IsAsync then
  +        begin
  +          if not Assigned(tmlSyncCallCritSect) then
  +          begin
  +            tmlSyncCallCritSect := TSyncExecuteCritSec.Create;
  +          end;
  +          if Assigned(tmlSyncCallCritSect) then
  +          begin
  +            tmlSyncCallCritSect.Enter;
  +            try
  +              tmlSyncCallCritSect.Clear;
  +              tmlSyncCallCritSect.CmdMsg             := cmdmsg;
  +              tmlSyncCallCritSect.i1                 := progress;
  +              tmlSyncCallCritSect.CmdProgressMethod  := cmdmsg.Profile.OnProgress;
  +              tmlSyncCallCritSect.Profile            := cmdmsg.Profile;
  +
  +              {$if  defined(FPC)}
  +                TThread.Synchronize(nil, @tmlSyncCallCritSect.SyncExecute);
  +              {$else}
  +                TThread.Synchronize(nil, tmlSyncCallCritSect.SyncExecute);
  +              {$ifend}
  +            finally
  +              tmlSyncCallCritSect.Leave;
  +            end;
  +          end;
  +        end
  +        else
  +        begin
  +          try
  +            cmdmsg.Profile.OnProgress(cmdmsg.Profile, cmdmsg, progress);
  +          finally
  +            cmdmsg.ReleaseData;
  +          end;
           end;
         end;
       end;
  
positive.code:     if Assigned(cmdmsg.Profile) then
      begin
        if Assigned(cmdmsg.Profile.OnCommandReady) then
        begin
          try
            cmdmsg.Profile.OnCommandReady(cmdmsg.Profile, cmdmsg);
          finally
            cmdmsg.ReleaseData;
          end;
        end;
      end;
      // command finished - free the command and the handle...
      if cmdmsg.IsAsync then
  
negative.code:   FOnPeerRegister_Bal      := nil;
    FOnBusyStatusRequest     := nil;
    FOnCalculation           := nil;
    FSyncReply               := False;
  
    FProfile  := 'urn:yourcompany.com:' + Name;
    FCommands := TTMLCommands.Create(Self);
  