No Firebird, como escrevo várias instruções if em um procedimento?

Estou escrevendo um script sql no Firebird para uma tarefa. Primeiro, eu tenho que criar uma tabela de 2 colunas e adicionar alguns valores (os valores não deveriam fazer nada ainda)

--Create the table
create table salary_class (
class varchar(5),
occurrence int ) ;

commit work;

--Add Values to our table
insert into salary_class (class, occurrence)
values ('ELITE', 0);
insert into salary_class (class, occurrence)
values ('HIGH', 0);
insert into salary_class (class, occurrence)
values ('MID', 0);
insert into salary_class (class, occurrence)
values ('LOW', 0);

commit work;

Depois que esse trabalho é confirmado, eu crio um procedimento. É suposto retornar uma determinada string com base no número que é passado para ela.

--Create f_class procedure
set term # ;
create procedure f_class(salary SALARY)

returns (lv VARCHAR(10)) as
begin
    --If statements for each occurrence level
    if (salary <= 39999) then
    lv = 'LOW';
    suspend;

    if (salary <= 67999) then
    lv = 'MID';
    suspend;

    if (salary <= 99999) then
    lv = 'HIGH';
    suspend;

    if (salary >= 100000) then
    lv = 'ELITE';
    suspend;

end#

set term ; #

--Demonstrate that f_class function works correctly
  select lv from f_class(20000);
  select lv from f_class(67999);
  select lv from f_class(68000);
  select lv from f_class(120000);

Chamar a função me dá

LV
null
null
null
ELITE

Mas deveria me dar

LV
LOW
MID
HIGH
ELITE

Se alguém pudesse lançar alguma luz sobre isso, seria muito apreciado. Estive puxando meu cabelo pelo manual do Firebird nos últimos 2 dias.

questionAnswers(1)

yourAnswerToTheQuestion