Dear all, In optim() all parameters of a function to be adjusted is stored in a single vector, with lower/upper bounds can be specified by a vector of the same length. In nls(), is it true that if I want to specify lower/upper bounds, functions must be re-written so that each parameter is contained in a single-valued vector? ## data input x <- 1:10 y <- 3*x+4*x^2+rnorm(10,250) ## this one does not work f <- function(x) function(beta) beta[1]+ beta[2]*x+beta[3]*x^2 out <- nls(y~f(x)(beta),data=data.frame(x,y), alg="port", start=list(beta=1:3), lower=list(beta=rep(0,3))) (However, this works if I do not specify a lower bound) ## this one works g <- function(x) function(beta1,beta2,beta3) beta1+ beta2*x+beta3*x^2 out <- nls(y~g(x)(beta1,beta2,beta3),data=data.frame(x,y), alg="port", start=list(beta1=1,beta2=1,beta3=1), lower=list(beta1=1,beta2=1,beta3=1)) Thanks in advance! Stephen