Por que o Delphi e o Free Pascal geralmente preferem um tipo de dados inteiro-assinado a um não assinado?

Eu não sou um novato Pascal, mas eu ainda não sei até agora porqueDelphi eFree Pascal geralmente declara parâmetros e valores retornados como inteiros assinados, enquanto eu os vejo sempre devem ser positivos. Por exemplo:

Pos() Retorna o tipo de inteiro. É possível ser negativo?SetLength() declara oNewLength parâmetro como um tipo de inteiro. Existe um comprimento negativo para string?System.THandle declarado como Longint. Existe um número negativo de alças?

Existem muitas decisões como as do Delphi e Free Pascal. Quais considerações estavam por trás disso?