Forçando nls a ajustar uma curva que passa por um ponto especificado

Estou tentando encaixar um sigmóide de Boltzmann1/(1+exp((x-p1)/p2)) para este pequeno conjunto de dados experimental:

xdata <- c(-60,-50,-40,-30,-20,-10,-0,10)
ydata <- c(0.04, 0.09, 0.38, 0.63, 0.79, 1, 0.83, 0.56)

Eu sei que é bem simples fazê-lo. Por exemplo, usandonls:

fit <-nls(ydata ~ 1/(1+exp((xdata-p1)/p2)),start=list(p1=mean(xdata),p2=-5))

Eu recebo os seguintes resultados:

Formula: ydata ~ 1/(1 + exp((xdata - p1)/p2))

Parameters:
   Estimate Std. Error t value Pr(>|t|)    
p1  -33.671      4.755  -7.081 0.000398 ***
p2  -10.336      4.312  -2.397 0.053490 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.1904 on 6 degrees of freedom

Number of iterations to convergence: 13 
Achieved convergence tolerance: 7.079e-06

No entanto, eunecessidade (devido a razões teóricas) a curva ajustada para passar precisamente pelo ponto(-70, 0). Embora o valor da expressão ajustada mostrada acima passe perto de zero emx = -70, não é exatamente zero, o que não é o que eu quero.

Então, a pergunta é: existe uma maneira de dizernls (ou alguma outra função) para caber na mesma expressão, mas forçando-a a passar por um ponto especificado?

Atualizar:

Como foi mencionado nos comentários, é matematicamente impossível forçar o ajuste a passar pelo ponto (-70,0) usando a função que eu forneci (o sigmóide de Boltzmann). Por outro lado, @Cleb e @BenBolker explicaram como forçar o ajuste a passar por qualquer outro ponto, por exemplo (-50, 0,09).

questionAnswers(2)

yourAnswerToTheQuestion