Isn't this what Queries are for?
QRY
QRY_MyMod_IsntOpen((ITEMGUID)Door)
AND
ItemIsOpen(Door)
THEN
ItemCloseAndLock(Door);
DB_NOOP;
IF
CharacterUsedItem(Character, Lever)
AND
DB_MyMod_LeverDoor(Lever, Door)
AND
QRY_MyMod_IsntOpen(Door)
THEN
ItemUnlockAndOpen(Door);
I am genuingly asking, as I have run into this and solve it with Modulo, but having been doing reading into Queries, I feel like this should work.