Variable gets registered even if when clause is false

In a playbook, a Variable gets registered even if “when” clause is false…Is this a bug?

Consider this playbook

`

The when: clause affects task execution, while register: puts into a
variable the status and output of a task.

So 'skipped' is a 'valid status of a task', which is what then is put
into the registered variable, this way subsequent tasks can do this:

when: registeredvar is skipped

to execute another task when previous one is skipped (or not + other
conditions).

What the value of ‘now’ variable?

Nevermind. (: