bioR <- function(bDay, targetDay) {
    bDay <- as.Date(bDay)
    targetDay <- as.Date(targetDay)
    n <- as.numeric(targetDay - bDay)

    cycles <- c(23, 28, 33)
    mods <- n%% cycles
    bioR <- c(sin(2 * pi * mods / cycles))
    loc <- mods / cycles
    current <- ifelse(bioR > 0, ': Up', ': Down')
    current <- paste(current, ifelse(loc < 0.25 | loc > 0.75,
                                     "and rising",
                                     "and falling"))

    df <- data.frame(dates = seq.Date(from = targetDay - 30, 
                                      to = targetDay + 30,
                                      by = 1))
    df$n <- as.numeric(df$dates - bDay)
    df$P <- sin(2 * pi * (df$n%% cycles[1]) / cycles[1])
    df$E <- sin(2 * pi * (df$n%% cycles[2]) / cycles[2])
    df$M <- sin(2 * pi * (df$n%% cycles[3]) / cycles[3])

    plot(df$dates, df$P, col = 'blue', 
         main = paste(targetDay, 'Biorhythm for Birthday on', bDay),
         xlab = "",
         ylab = "Intensity")
    points(df$dates, df$E, col = 'green')
    points(df$dates, df$M, col = 'red')
    abline(v = targetDay)
    legend('topleft', legend = c("Phys", "Emot", "Ment"),
           col =c("blue", "green", "red"),
           cex = 0.8,
           pch = 21)

    cat(paste0('Birthday = ', as.character(bDay),
               '\nTarget Date = ', as.character(targetDay),
               '\n', n, ' days',
               '\nPhysical = ', mods[1], current[1],
               '\nEmotional = ', mods[2], current[2],
               '\nMental = ', mods[3], current[3]))
}

bioR('1943-03-09', '1972-07-11')