anchor.diff:    FTimeoutThread.FreeOnTerminate := false;
     FTimeoutThread.ThreadHandle := AThreadHandle;
     FTimeoutThread.Timeout := ATimeout;
  -  FTimeoutThread.Resume;
  +  FTimeoutThread.Start;
   end;
   
   destructor TTimeout.Destroy;
  
positive.code:     if Terminated then
        Break;
  
      elaspedTime := GetElapsedTime(startTime);
    until (elaspedTime >= Timeout);
  
    //If we haven't been terminated then we have timed out.
    if not Terminated then
  
negative.code: 
  procedure TTimeoutThread.Execute;
  var
    startTime : 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.
  