Dados de Notificações sobrescrevendo antigas no Android

Preciso de ajuda em uma detalhe de um app que estou criando, para mostrar notificações.

Segue o código:

Button que passo os dados para o Receiver.

Intent intent = new Intent("CALARME");
intent.putExtra("descricao", m.getDescricao_lancamento());
intent.putExtra("valor", m.getValor().toString());
intent.putExtra("categoria", m.getId_categoria_fk().toString());
intent.putExtra("dia", m.getDia_referencia());
intent.putExtra("hora", m.getHora_referencia());
intent.putExtra("minuto", m.getMinuto_referencia());

PendingIntent pendingIntent = PendingIntent.getBroadcast(ActivityAdd.this, 0, intent, 0);
Calendar setcalendar = Calendar.getInstance();
setcalendar.set(Calendar.DAY_OF_MONTH, m.getDia_referencia());
setcalendar.set(Calendar.HOUR_OF_DAY, m.getHora_referencia());
setcalendar.set(Calendar.MINUTE, m.getMinuto_referencia());
setcalendar.set(Calendar.SECOND, 0);

AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, setcalendar.getTimeInMillis(), pendingIntent);                               

Aqui o BroadcastReceiver.

@Override
    public void onReceive(Context context, Intent intent) {
        Bundle extras = intent.getExtras();
            String descricao = extras.getString("descricao");
            String valor = extras.getString("valor");
            String categoriaid = extras.getString("categoria");

            Integer dia = extras.getInt("dia");
            Integer hora = extras.getInt("hora");
            Integer minuto = extras.getInt("minuto");

            Lanc m = new Lanc();
            m.setDescricao_lancamento(descricao);
            m.setValor(Float.parseFloat(valor));
            m.setId_categoria_fk(Integer.parseInt(categoriaid));

            m.setDia_referencia(dia);
            m.setHora_referencia(hora);
            m.setMinuto_referencia(minuto);
            new MyNotification().geraNotificacao(context, m);
    }

E aqui a notificação.

public class MyNotification implements Serializable {

    public void geraNotificacao(Context context, Lancamentos lancamentos) {

        NotificationManager nm = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
        PendingIntent p = PendingIntent.getActivity(context, 0, new Intent(context, ActivityResumoLancamento.class), 0);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
        builder.setTicker("Notificação de Contas Mensais");
        builder.setContentTitle(lancamentos.getDescricao_lancamento());
        builder.setSmallIcon(R.mipmap.ic_launcher);
        builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher));
        builder.setContentIntent(p);

        NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle();
        String[] desc = new String[]{
                "Título: " + lancamentos.getDescricao_lancamento(),
                "Categoria: " + lancamentos.getId_categoria_fk(),
                "Valor: " + lancamentos.getValor().toString()
        };

        for(int i = 0; i < desc.length; i++){
            style.addLine(desc[i]);
        }

        builder.setStyle(style);

        Notification n = builder.build();
        n.vibrate = new long[]{150, 300, 150, 300};
        n.flags = Notification.FLAG_AUTO_CANCEL;
        nm.notify(lancamentos.getDia_referencia() + lancamentos.getHora_referencia() + lancamentos.getMinuto_referencia(), n);

        try {

            Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            Ringtone ringtone = RingtoneManager.getRingtone(context, uri);
            ringtone.play();

        } catch (Exception e) {
            System.out.print(e);
        }


    }

}

O que acontece é que quando agendo uma notificação para daqui a 2 min, e depois agendo outro para daqui a 4 min, as duas notificações aparecem, mas apenas com os dados da ultima, sobrescrevendo a primeira.

Como será que soluciono isso?