anchor.diff:  
   procedure TTimeoutThread.Execute;
   var
  -  I: Integer;
     startTime : Cardinal;
  -  elaspedTime : Cardinal;
  +  elapsedTime : Cardinal;
   begin
     inherited;
   
     //Get the tickcount so that we leave timing up to the system.
     startTime := GetTickCount;
  +  elapsedTime := 0;
   
     repeat
       //Give some time back to the system to process the test.
  
positive.code:   FTimeoutThread.FreeOnTerminate := false;
    FTimeoutThread.ThreadHandle := AThreadHandle;
    FTimeoutThread.Timeout := ATimeout;
    FTimeoutThread.Resume;
  end;
  
  destructor TTimeout.Destroy;
  
negative.code:     if Terminated then
        Break;
  
      elapsedTime := GetElapsedTime(startTime);
    until (elapsedTime >= Timeout);
  
    //If we haven't been terminated then we have timed out.
    if not Terminated then
  