Hi Klod,
This is subtle! "section .bss" is a macro, which expands to "[section .bss]" - and sets the "__SECT__" macro to .bss. The "struc" macro depends on "__SECT__" to get back from the "absolute" section to whatever section we were in. Supposed to be ".bss", but because "[section...]" didn't set "__SECT__", we switch back to ".text", where "__SECT__" was initialized. It *does* tell you this in the Friendly Manual...
http://www.nasm.us/doc/nasmdoc6.html#section-6.3.1... but perhaps doesn't make it fully clear. You've got to use the "user level" (macro) form of the "section" directive if the "struc" macro is going to work correctly.
Just remove the "[]" from your section declarations and it'll work fine (I think).
Best,
Frank