Hay un pequeño fallo que yo no he conseguido controlar de ninguna manera, incluso en tu código, claray. Verás, cuando pones en tu sistema que la fecha es 28 de febrero, te pone en el select como fecha de regreso el 1 de marzo, pero si abres el select de los días de marzo, tiene 28 y debería poner 31. Es decir, que eso no se "actualiza", suponiendo que sea la palabra exacta. Con eso estaría gran parte del problema resuelto, aunque a mí no se me ha ocurrido cómo controlarlo. Espero que puedas ayudarme con eso
Muchas gracias por todo.