Moral of the story is that the is() macro doesn't return 1's and 0's per se, so don't set a variable to it as though it returns a numerical value.
Short explanation:
The macro "is" is defined as follows:
#define is(obj,flag) (obj->flags & (flag))
The flag "SHOW" is defined as follows:
#define SHOW (1<<14)
That means if you write
is(panel1,SHOW),
that translates to
(panel1->flags & SHOW)
what is equal to 2^14.