Como calcular a área sob cada extremidade de uma curva senoidal

Dado este conjunto de dados:

y<-c(-13,16,35,40,28,36,43,33,40,33,22,-5,-27,-31,-29,-25,-26,-31,-26,-24,-25,-29,-23,4)
t<-1:24

Meu objetivo é calcular duas áreas. A primeira área integraria apenas os dados da primeira parte da curva encontrada acima da linha Zero. A segunda área integraria dados da segunda parte da curva encontrada abaixo da linha zero.

Primeiro, eu gostaria de ajustar uma onda senoidal a esses dados. Usando esta excelente resposta:

https://stats.stackexchange.com/questions/60994/fit-a-sinusoidal-term-to-data

Consegui encaixar uma onda senoidal (usarei o periódico com o segundo harmônico que parece ter um melhor encaixe)

ssp <- spectrum(y)  
per <- 1/ssp$freq[ssp$spec==max(ssp$spec)]
reslm <- lm(y ~ sin(2*pi/per*t)+cos(2*pi/per*t))
summary(reslm)

rg <- diff(range(y))
plot(y~t,ylim=c(min(y)-0.1*rg,max(y)+0.1*rg))
lines(fitted(reslm)~t,col=4,lty=2)   # dashed blue line is sin fit

# including 2nd harmonic really improves the fit
reslm2 <- lm(y ~ sin(2*pi/per*t)+cos(2*pi/per*t)+sin(4*pi/per*t)+cos(4*pi/per*t))
summary(reslm2)
lines(fitted(reslm2)~t,col=3)    # solid green line is periodic with second harmonic
abline(h=0,lty=2)

Em seguida, gostaria de calcular a área sob a curva que é apenas positiva, bem como a área sob a curva que é exclusivamente negativa. Tive sorte em procurar respostas semelhantes usando as funções da AUC nos pacotes Bolstad2 e Mess. Mas meus pontos de dados não se enquadram na linha zero e não sei como dividir a função seno em áreas somente acima da linha Zero e somente abaixo da linha Zero.

questionAnswers(2)

yourAnswerToTheQuestion