Hi Phil, My apologies, I assumed you were working in C, not C++. Try this... struct S { union { struct { unsigned a : 1; unsigned b : 31; }; unsigned ab; } m; void S::operator = (S const& in) volatile { m.ab = in.m.ab; } }; volatile S s; void f() { S x; x.m.a = 0; x.m.b = 0; s = x; } HTH, --Eljay