anchor.diff:      Inc(I);
     {$ENDIF}
   
  -{$IFDEF WINDOWS}
  +{$IFDEF USEPTHREADS}
  +  pthread_mutex_destroy(@_Handle);
  +{$ELSE}
   	DeleteCriticalSection(_Handle);
  -{$ELSE}
  -  pthread_mutex_destroy(@_Handle);
   {$ENDIF}
   End;
   
  
positive.code: 
  Procedure Semaphore.Wait();
  Begin
    {$IFDEF WINDOWS}
    WaitForSingleObject(_Handle, INFINITE);
    {$ELSE}
  
    {$IFNDEF HAS_SEMAPHORES}
    sem_wait(@_Handle);
    {$ENDIF}
    
    {$ENDIF}
  End;
  
  {$IFDEF DEBUG_LOCKS}
  Var
    I:Integer;
  {$ENDIF}  
  
  Initialization
  Finalization
  
negative.code:   Sections[Pred(SectionCount) ] := Self;
    {$ENDIF}
  
  {$IFDEF USEPTHREADS}
    pthread_mutex_init(@_Handle, Nil);
  {$ELSE}
  	InitializeCriticalSection(_Handle);
  {$ENDIF}
  End;
  
  