I think that is the way the mbboRecord works. This is from the process() function:
if(prec->nsev < INVALID_ALARM
&& prec->sevr == INVALID_ALARM
&& prec->omsl == menuOmslsupervisory) {
/* reload value field with B0 - B15 */
int offset = 1, i;
unsigned char *bit = &(prec->b0);
for (i=0; i<NUM_BITS; i++, offset = offset << 1, bit++) {
if (*bit)
prec->val |= offset;
else
prec->val &= ~offset;
}
}
/* convert val to rval */
convert(prec);
If I read this correctly then the first time the record processes sevr==INVALID_ALARM so it will overwrite the VAL field with the Bn fields.
Mark