--- common/gsm-sms.c.orig 2007-06-12 17:26:34.000000000 +0200 +++ common/gsm-sms.c 2007-06-12 17:42:05.000000000 +0200 @@ -1360,7 +1360,7 @@ while (data->sms->user_data[i].type != GN_SMS_DATA_None) { switch (data->sms->dcs.u.general.alphabet) { case GN_SMS_DCS_DefaultAlphabet: - total += ((data->sms->udh.length+1) % 8 + data->sms->user_data[i].length) * 7 / 8; + total += (data->sms->user_data[i].length * 7 + 7) / 8; break; case GN_SMS_DCS_UCS2: total += (data->sms->user_data[i].length * 2); @@ -1372,10 +1372,9 @@ memcpy(&ud[i], &data->sms->user_data[i], sizeof(gn_sms_user_data)); i++; } - total += (data->sms->udh.length+1); /* Count number of SMS to be sent */ - count = (total + MAX_SMS_PART - 1)/ MAX_SMS_PART; + count = (total + MAX_SMS_PART - (data->sms->udh.length+1) - 1) / (MAX_SMS_PART - (data->sms->udh.length+1)); dprintf("Will need %d sms-es\n", count); start = 0;