ˇHola de nuevo!
Creo que debes usar
By Value en lugar de
By Descriptor, ya que de lo contrario Firebird/InterBase toma los argumentos y resultados de UDFs como parámetros por referencia.
Es decir, casi podría segurar que el valor
193302400, que mencionas en tu ejemplo es la dirección de memoria de un entero que tiene un valor de 100.
Espero esto sea de utilidad, seguimos en contacto.
Al González
.