Hi Aki, > - if (offset != 0) { > - sms->submit.ud[offset] = (ref & 0xf0) >> 8; > - sms->submit.ud[offset+1] = (ref & 0x0f); > - } > - > sms_address_from_string(&sms->submit.daddr, to); > + > + if (offset == 0) > + continue; > + > + if (use_16bit) { > + sms->submit.ud[offset] = ref & 0xf0 >> 8; This doesn't look right at all, bitwise shift >> has higher precedence than bitwise AND &. > + sms->submit.ud[offset+1] = ref & 0x0f; > + } else { > + sms->submit.ud[offset] = ref & 0x0f; > + } Regards, -Denis