% computes the steady state of ramst.mod analyticaly. 
% [stephane.adjemian@ens.fr 06-21-2006]
function [ys,check] = SWNLRamseyIRest_steadystate(ys,exe)
  global M_ options_ oo_ 
  
%   mu = 0;     % These initializations are needed because mu,beta and alpha are fonctions of a
%   beta = 0;   % matlab toolbox!
  alpha = 0;  % 
  
  
  %%$$ DON'T CHANGE THIS PART
  NumberOfParameters = M_.param_nbr;
  for i = 1:NumberOfParameters
    paramname = deblank(M_.param_names(i,:)); 
    eval([ paramname ' = M_.params(' int2str(i) ');']);    
  end
  check = 0;
  %%$$END.

eps_z	=	1.0000000	;
eps_h=1;
m_e=m_bar_e;
m_i=m_bar_i;
q_kc	=	q_kc_ss	;
q_kh	=	q_kh_ss	;
% X_pwc	=	1.2000000000	;
% 	X_pwh	=	1.2000000000	;
% 	X_iwc	=	1.2000000000	;
% 	X_iwh	=	1.2000000000	;
   
    %%%%%%%%%%
    % Interest rates
    f=f_ss;
    PHI=exp(phi_f*f);
     r_star=r_star_bar;
    r_f	=r_star*PHI; 
    
r_dlv=1/beta_p-1;
r_deu=1/beta_p-1;
r=(1+eps_dlv_bar)/eps_dlv_bar*r_dlv;
r_Deu = r;

r_b = r_f*(1+phi_f*f_ss) ; % wholesales loan rate
r_bh =  r_b/(1-1/eps_bh_bar);
r_be =  r_b/(1-1/eps_be_bar);


%%%%%%%%%%

ZETA0=beta_e*mu_c/(1-(1-del_kc)*(beta_e+(1/(1+r_be)-beta_e)*m_bar_e))/X_ss;%A26
ZETA1=beta_e*mu_h/(1-(1-del_kh)*(beta_e+(1/(1+r_be)-beta_e)*m_bar_e));%
ZETA2=eps_z*eps_h*(1-a_p)/((1-beta_p*(1-del_h))*(1-beta_p*a_p));
ZETA3=eps_z*eps_h*(1-a_i)/(1-beta_i*(1-del_h)-m_bar_i*(1-del_h)*(1/(1+r_bh)-beta_i))/(1-beta_i*a_i);
%ZETA4=  

CHI1 = 1+del_h*ZETA2- ((1- mu_h)*omega/X_pwh_ss +m_bar_e* r_deu*(1-ni_b)*(1-del_kh)*ZETA1/(1+r_be ))*del_h*ZETA2    ;
CHI2 = ( (1- mu_h)*omega/X_pwh_ss +   m_bar_e*r_deu*(1-ni_b)*(1-del_kh)*ZETA1/(1+r_be))*del_h*ZETA3 +  r_deu/(1+r_bh)*...
(1-ni_b)*m_bar_i*(1-del_h)*ZETA3;
CHI3 = (X_ss-1+ (1-mu_c)*omega/X_pwc_ss+X_ss*r_deu/(1+r_be)*((1-ni_b)*m_bar_e*(1-del_kc)*ZETA0- X_ss*r_deu*f_ss))/X_ss ;
CHI4 = 1+(-(1- mu_h)*(1-omega)/X_iwh_ss*del_h   + del_h+  r_bh/(1+r_bh)*m_bar_i*(1-del_h))*ZETA3  ;
CHI5 = (1-mu_h)*(1-omega)*del_h*ZETA2/X_iwh_ss ;
CHI6 =(1-mu_c)*(1-omega)/(X_pwc_ss*X_ss) ;

CY = (CHI3*CHI4+CHI2*CHI6)/(CHI1*CHI4-CHI2*CHI5) ;
CYPRIME = (CHI1*CHI6+CHI3*CHI5)/(CHI1*CHI4-CHI2*CHI5) ;
QIY =del_h*(ZETA2*CY + ZETA3*CYPRIME) ;

RATION = X_pwc_ss/X_pwh_ss*(1-mu_h)/(1-mu_c)*QIY*X_ss;
NHNC=RATION^(1/(1+ksi_p));

l_pc = (((1-beta_p*a_p)/(1-a_p)*(1-mu_c)*omega/CY/X_ss/X_pwc_ss)/(1+RATION)^((eta_p-ksi_p)/(1+ksi_p)))^(1/(1+eta_p));
l_ph =l_pc *NHNC;

RATION1 = X_iwc_ss/X_iwh_ss*(1-mu_h)/(1-mu_c)*QIY*X_ss;
NHNC1=RATION1^(1/(1+ksi_i));

l_ic =( ((1-beta_i*a_i)/(1-a_i)*(1-mu_c)*(1-omega)/CYPRIME/X_ss/X_iwc_ss)/(1+RATION1)^((eta_i-ksi_i)/(1+ksi_i)))^(1/(1+eta_i));
l_ih =l_ic *NHNC1;

Y = l_pc^omega*l_ic^(1-omega)*ZETA0^(mu_c/(1-mu_c));
IH= (l_ph^omega*l_ih^(1-omega))^(1-mu_h)*(ZETA1*Y*QIY )^mu_h;

q_h = QIY*Y/IH;

QI = QIY*Y ;

k_c = ZETA0*Y ;
k_h = ZETA1*QI ;

i_c= del_kc*k_c;
i_h = del_kh*k_h;

c_p = CY*Y ;
c_i = CYPRIME*Y ;

h_p = ZETA2*c_p/q_h ;
h_i = ZETA3*c_i/q_h ;

%lavue of loans
b_h=1/(1+r_bh)*m_bar_i*q_h*(1-del_h)*h_i;
b_e=m_bar_e*(q_kc_ss*(1-del_kc)*k_c+q_kh_ss*(1-del_kh)*k_h)/(1+r_be);


w_pc = (1-mu_c)*omega*Y/(X_ss*l_pc);
w_ic = (1-mu_c)*(1-omega)*Y/(X_ss*l_ic);
w_ph = (1-mu_h)*omega*q_h*IH/l_ph;
w_ih = (1-mu_h)*(1-omega)*q_h*IH/l_ih;


c_e = mu_c*Y/X_ss + mu_h*q_h*IH  - q_kc_ss*del_kc*k_c-q_kh_ss*del_kh*k_h - r_be*b_e;
C=c_p+c_i+c_e;

B=b_h+b_e;
K_b=ni_b*B;
F=f_ss*Y;


D= (1-ni_b)*B - F; % total deposits , 
D_lv =D/2; %preliminary

D_eu=D/2;%preliminary

% kapa_D =( r_b - r + kapa_f*F)/D_lv;
% bank profit
% Y_ex = alpha_star*Y_star_bar;
neer=1;

 Y_ex = alpha*C*neer  +  r_f*F;

GDP=(1-alpha)*(c_p+c_i+c_e)+i_c+i_h+Y_ex+q_h*IH; % probably  the investment should be -  (1-alpha)*(i_c+i_h)
kapa_f = ( r- r_b +  kapa_D*D/2)/F;
J_b=r_bh*b_h+r_be*b_e-r_dlv*D_lv-r_deu*D_eu-r_f*f*Y - kapa_D/2*(D_lv^2+D_eu^2)-kapa_f/2*(f*Y)^2;

lam_p = (1-beta_p*a_p)/(c_p*(1-a_p));
lam_i1 = (1-beta_i*a_i)/(c_i*(1-a_i));
lam_e1=  (1-beta_e*a_e)/(c_e*(1-a_e));

lam_i2=lam_i1*(1/(1+r_bh)-beta_i);
lam_e2=lam_e1*(1/(1+r_be)-beta_e);

	
% 	GDP	=	GDP_ss	;
	

	X	=	X_ss	;
	%f	=	0.3439783	;
    
    
    %PHI	=	1.0034457	;
	P	=	1.0000000	;
	P_h	=	1.0000000	;
	%r	=	0.04	;
	%r_f	=	0.040137828	;
   
    
	%r_star	=	0.04	;
% 	r_b	=	0.040275894	;
% 	r_deu	=	0.031276084	;
% 	r_dlv	=	0.031276084	;
% 	r_Deu	=	0.04	;
% 	r_bh	=	0.059727434	;
% 	r_be	=	0.045	;

	%F	=	0.3439783	;
% 	m_i	=	0.6847732	;
% 	m_e	=	0.4731418	;
	A_c	=	1.0000000	;
	A_h	=	1.0000000	;
	e	=	1.0000000	;
	pi	=	1.0000000	;
% 	b_e	=	0.6993771	;
	pi_h	=	1.0000000	;
	pi_star	=	1.0000000	;
% 	b_h	=	0.6005982	;
% 	D_lv	=	0.4000000	;
% 	D_eu	=	0.4000000	;
	q_kc	=	q_kc_ss	;
	q_kh	=	q_kh_ss	;
	ds	=	0	;
	P_star	=	1.0000000	;
	Y_star	=	Y_star_bar	;
	phi	=	0.0000000	;
% 	C	=	0.7417940	;
	eps_bh	=	eps_bh_bar	;
	eps_be	=	eps_be_bar	;
	eps_dlv	=	eps_dlv_bar	;
	eps_deu	=	eps_deu_bar	;
	K_B	=	K_b/B	;
	r_obs	=	r*100*4 ;
	r_be_obs	=	 r_be*100*4 ;
	r_bh_obs	= r_bh*100*4 ;
	r_deu_obs	=	 r_deu*100*4 ;
	r_star_obs	=	 r_star*100*4 ;
	C_obs 	=	0	;
	q_h_obs	=	0	;
	ome_pc 	=	1	;
	ome_ic 	=	1	;
	ome_ph 	=	1	;
	ome_ih	=	1	;
	X_pwc	=	X_pwc_ss	;
	X_pwh	=	X_pwh_ss	;
	X_iwc	=	X_iwc_ss	;
	X_iwh	=	X_iwh_ss	;
	b_h_obs 	=	0	;
	b_e_obs 	=	0	;
	D_lv_obs 	=	0	;
	D_eu_obs 	=	0	;
	K_B_obs 	=	0	;
c_e_obs = 0 ;
c_i_obs = 0 ;
c_p_obs = 0 ;
h_i_obs = 0 ;
h_p_obs = 0 ;
i_c_obs = 0 ;
i_h_obs = 0 ;
IH_obs = 0 ;
J_b_obs = 0 ;
K_obs = 0 ;
q_kc_obs = 0 ;
q_kh_obs = 0 ;
B_obs = 0 ;
dneer = 0 ; 
S_h_f =  (r_bh-r_star)*100;
S_e_f =(r_be-r_star)*100;
S_pol = (r-r_star)*100;
pi_obs 	=	0	;
GDP_obs = 0 ;
r_dlv_obs = r_dlv*100*4 ;
r_f_obs = r_f*100*4 ;
F_obs = 0 ;
EE_ni_b=0;
EE_K_b=0;

neer_exo = 1 ;
pi_star_obs=0;
% NumberOfEndogenousVariables = M_.endo_nbr;
%   ys = zeros(NumberOfEndogenousVariables,1);
%   for i = 1:NumberOfEndogenousVariables
%     varname = deblank(M_.endo_names(i,:));
%     eval(['ys(' int2str(i) ') = ' varname ';']);
%   end


  
  
  
  
  
  %%
for iter = 1:length(M_.params)
  eval([ 'M_.params(' num2str(iter) ') = ' M_.param_names(iter,:) ';' ])
end

if isfield(M_,'param_nbr') == 1

if isfield(M_,'orig_endo_nbr') == 1
NumberOfEndogenousVariables = M_.orig_endo_nbr;
else
NumberOfEndogenousVariables = M_.endo_nbr;
end
ys = zeros(NumberOfEndogenousVariables,1);
if options_.linear
    
else
for i = 1:NumberOfEndogenousVariables
  varname = deblank(M_.endo_names(i,:));
  eval(['ys(' int2str(i) ') = ' varname ';']);
end
end

else
ys=zeros(length(lgy_),1);
for i = 1:length(lgy_)
    ys(i) = eval(lgy_(i,:));
end
check = 0;
end

  
  
  
  
  
  
  