function o=jhivfitting(V,I,Vc)
plots=0;
IsTeVf=[0.1 10 0];
if length(V)<3 o=jhjamie([],[]); return; end
falling=diff(I)./diff(V)<0; falling(end+1)=falling(end); % taking into account only part where dI/dV<0
minI=min(I);
nn=round(length(Vc)/30); if nn==0 nn=1; end
for i=1:nn:length(Vc)
 ii=V<Vc(i) & V<IsTeVf(3)+3*IsTeVf(2) & [falling  | V<IsTeVf(3)];% & I>minI/2  
 o=jhjamie(V(ii),I(ii)); 
 if all(~isnan(o.IsTeVf)) IsTeVf=IsTeVf/2+o.IsTeVf/2; end
 O.R2adj(i)=o.R2adj;
 O.Terr(i)=o.err(2)./o.IsTeVf(2);
 O.T(i)=o.IsTeVf(2);
end
if ~exist('O') o=jhjamie([],[]); return; end
[tmp,i]=max(O.T./[1-O.R2adj]./O.Terr); % making sure the output is only the most credible fit
 ii=V<Vc(i) & V<IsTeVf(3)+1.5*IsTeVf(2) &  [falling  | V<IsTeVf(3)];% & I>minI/2;  
 if plots hold on; plot(V,I); end
 o=jhjamie(V(ii),I(ii),plots); 
%hold on
%plot(Vc,O.R2adj,Vc,1./O.Terr,Vc,O.T)
if plots hold off; end
