Hi One of the most important calculation in applied finance is the number of days between dates. That kind of calculus become annoying when a specific calendar must be used. That is the case for the business days calculus. The package timeDate has a function isBizday to perform that kind of thing. The problem is that using this function to calculate the number of business days between dates has taken a very long time. An example of such an implementation is the function below. Has anyone an optimized function to to this counts? Clearly I have in mind to perform at least the basic analytics for a bond: Duration, internal rate of return , net present value, etc... That is not time feasible with a portfolio of bond using the function below. tks library(timeDate) BuziInDates <- function(start, end, holidays){ #calculates the number of business days #between the dates start and end. if(class(start) != "Date" | class(end) != "Date"){ stop("Arguments must be of class Date.") } if(class(holidays) != "function"){ stop("holidays must be a function") } if(start > end){ stop("start date must not be greater than end date.") } y1 <- as.POSIXlt(start)$year + 1900 y2 <- as.POSIXlt(end)$year + 1900 seqs <- timeSequence(from = start, to = end, by = "day") ndays <- length(seqs) dts <- NULL temp <- NULL if( y1 == y2){ temp <- window(holidays(y1), start = start, end = end) dts <- seqs[isBizday(seqs,temp)] }else{ temp <- holidays(y1) for(k in seq(from = y1+1, to = y2)){ temp <- c(temp,holidays(k)) } temp <- window(temp, start = start, end = end) dts <- seqs[isBizday(seqs,temp)] } bdays <- length(dts) return(bdays) } ### using the function... BuziInDates(as.Date('2009-09-11'), as.Date('2030-09-11') , holidayNYSE) [[alternative HTML version deleted]]