¿Cómo puedo redondear una fecha al inicio / final del trimestre?

Necesito tomar un vector de fechas y para cada fecha obtener el primer día del próximo trimestre.

(O más bien, redondear al último día del trimestre actual, encontrar el primer día del próximo trimestre y despegar es mi plan)

lubridate redondeará / tope a meses, pero no a cuartos

La única solución que he encontrado hasta ahora es hacer una lista de vectores que comience todo el trimestre desde 1970 hasta 2099 y luego buscarla para encontrar la fecha mínima después de mi fecha. Claramente, esto vectoriza y escala mal.

Necesito poder especificar el mes de fin de año (aunque el año siempre comienza el 1 de cada mes)

P.ej.

x = as.Date("2014-08-15")
RoundToQuarterStart(x, yearStarts = "March")
[1] "2014-09-01"

Dado que el año comienza el 1 de marzo en este ejemplo, el tercer trimestre comienza el 1 de septiembre, que es el próximo trimestre después de la fecha indicada. (o de manera equivalente, esta fecha pertenece al segundo trimestre que finaliza el 31 de agosto)

Respuestas a la pregunta(3)

Su respuesta a la pregunta