Hola,
Creo que lo más adecuado es irse por el valor absoluto. Supuestamente ya está optimizada esta función y debería hacer uso de la instrucción ABS y/o FABS en assembler que justamente lo único que hacen es alterar el campo de signo.
La ventaja del uso del valor absoluto es que no interesa si se ingresa positivo o negativo... siempre se obtiene el "lado positivo" y lo que nos resta por hacer es multiplicarlo por -1 en caso de ser necesario (que es más que evidente que solo aplica para cuando se requiere de los negativos) y no se necesita de hacer evaluaciones previas, como la que sugiere Nuño. Añadir un IF equivale a añadir un V(G) = 2. Dos IFs, son V(G) = 4. A mi humilde ver, me parece algo exagerado contar con una V(G) de 4 sólo para generar positivos y/o negativos.
Cuanto mucho me podría preguntar si da lo mismo hacer:
Código Delphi
[-]Negativo := - Abs(Valor);
Que:
Código Delphi
[-]Negativo := Abs(Valor) * -1;
Saludos,