Cita: if (today.get(Calendar.MONTH) <= birth.get(Calendar.MONTH)) {
if (today.get(Calendar.MONTH) == birth.get(Calendar.MONTH)) {
if (today.get(Calendar.DATE) > birth.get(Calendar.DATE)) {
factor = -1; //Aun no celebra su cumpleaños
No hace falta complicarse tanto, ya que Calendar.DAY_OF_YEAR te devuelve el numero de día dentro del año, así que comparando eso no hace falta mirar los meses.
S!