Once In_STB = 0 then you might have had half a second passed not a full second.

Or, if a full second is passed and you are in DataDone, then you might still have had In_STB = 1; then you come back immediately (possibly).

Or, having a timer module running inside a WHILE statement will keep you and your Timer module locked in that WHILE statement. Thus, having a "PAUSE 1000" will do the same job for you cause the statement is locked anyway.

--------------------------