in order to get the value 517, bind that value in the INSERT, then have your trigger fire, ignore the 517, generate the next value from the sequence which would be 518 if you have a single-user single-node environment with no reboots and where the sequence never ages out of the shared pool which would then be used in the INSERT into the table. That would account for skipping one value, though, but not two. As clcarter points out, you may also have multiple triggers on the table.
SELECT sq_id_admin.nextval FROM dual
IF( :new.id IS NULL ) THEN SELECT sq_id_admin.nextval INTO :new.id FROM dual END IF;