function [numSSPR,diffProjFullEq,fval,exitflag,output,Jacob,eigJacob,nzeig] = GetFzeroSSPRwHcurr_db(aPRwH,VdsOut,quasiSS)

  %% What does it do?
  % This serves as another check for the steady state by using fsolve on
  % the full 8-dimensional problem. It uses as a starting point the
  % equilibrium state found by projecting the problem to the Vs Vd plane in
  % ProjGateEquilVsVd_db. The differenxe between the two should be minimal
  % One advantage is we get the full 8-d linearization with eigenvalues.
  
    %options=optimset('TolFun',1e-14,'Display','iter','MaxIter',1000,'MaxFunEvals',100000);
    options=optimset('TolFun',1e-14,'MaxIter',1000,'MaxFunEvals',100000,'Display','none');
    [numSSPR,fval,exitflag,output,Jacob] = fsolve(@PR94rhs,quasiSS,options);
    eigJacob=eig(Jacob);
    nzeig=0;
    for i=1:size(eigJacob,1)
       if eigJacob(i) > 0 
           display('Warning one of the eigenvalues of the Jacobian is positive')
           nzeig=nzeig+1;
       end
    end
    diffProjFullEq=numSSPR-quasiSS;
function dY = PR94rhs(Y)
  
dY = zeros(8,1);    % a column vector
dY(1) = (1/aPRwH.Cm)*(-aPRwH.gL*(Y(1)-aPRwH.EL)-aPRwH.gNa*MInfPR94(Y(1),aPRwH.WRT)*Y(4)*(Y(1)-aPRwH.ENa)-aPRwH.gKDR*Y(5)*(Y(1)-aPRwH.Ek) ...
    +(aPRwH.gc/aPRwH.p)*(Y(2)+VdsOut-Y(1))+aPRwH.Isinj/aPRwH.p);
dY(2) = (1/aPRwH.Cm)*(-aPRwH.gL*(Y(2)-aPRwH.EL)-aPRwH.gCa*Y(6)^2*(Y(2)-aPRwH.ECa)-aPRwH.gKAHP*Y(8)*(Y(2)-aPRwH.Ek)-aPRwH.gKC*Y(7)*Chi(Y(3))*(Y(2)-aPRwH.Ek)...
        - aPRwH.gh*Y(9)*(Y(2)-aPRwH.Eh)+ aPRwH.gc/(1-aPRwH.p)*(Y(1)-VdsOut-Y(2))+aPRwH.Idinj/(1-aPRwH.p));
dY(3) = -0.13*aPRwH.gCa*Y(6)^2*(Y(2)-aPRwH.ECa)-0.075*Y(3);
dY(4) = (GateEquil_db(alphah_db(Y(1),aPRwH.WRT),betah_db(Y(1),aPRwH.WRT))-Y(4))/GateTimeCnst_db(alphah_db(Y(1),aPRwH.WRT),betah_db(Y(1),aPRwH.WRT));
dY(5) = (GateEquil_db(alphan_db(Y(1),aPRwH.WRT),betan_db(Y(1),aPRwH.WRT))-Y(5))/GateTimeCnst_db(alphan_db(Y(1),aPRwH.WRT),betan_db(Y(1),aPRwH.WRT));
dY(6) = (GateEquil_db(alphas_db(Y(2),aPRwH.WRT),betas_db(Y(2),aPRwH.WRT))-Y(6))/GateTimeCnst_db(alphas_db(Y(2),aPRwH.WRT),betas_db(Y(2),aPRwH.WRT));
dY(7) = (GateEquil_db(alphac_db(Y(2),aPRwH.WRT),betac_db(Y(2),aPRwH.WRT))-Y(7))/GateTimeCnst_db(alphac_db(Y(2),aPRwH.WRT),betac_db(Y(2),aPRwH.WRT));
dY(8) = (GateEquil_db(alphaq_db(Y(3)),betaq_db)-Y(8))/GateTimeCnst_db(alphaq_db(Y(3)),betaq_db);
dY(9) = (GateEquil_db(alpha_idB(Y(2),aPRwH.h_Vhalf,aPRwH.HcurrLippertWRT),beta_idB(Y(2),aPRwH.h_Vhalf,aPRwH.HcurrLippertWRT))-Y(9))./GateTimeCnst_db(alpha_idB(Y(2),aPRwH.h_Vhalf,aPRwH.HcurrLippertWRT),beta_idB(Y(2),aPRwH.h_Vhalf,aPRwH.HcurrLippertWRT));
end
function CaSatChi= Chi(Ca)
    CaSatChi = min(Ca/250,1);
end

function MInfsqr = MInfPR94(Vs,WRT)  
    MInfsqr = GateEquil_db(alpham_db(Vs,WRT),betam_db(Vs,WRT))^2;
end

end