diff --git a/calcrn_vect.m b/calcrn_vect.m
index a105c9aa69a09235b4435f1e2a92f36eba67ad69..44107f88c0b93874946cd3553184e7f3363944b2 100644
--- a/calcrn_vect.m
+++ b/calcrn_vect.m
@@ -1,7 +1,22 @@
 function [albs,arns,brns,crns,arnv,brnv,crnv,cras,crav]=calcrn_vect(rg,ratm,emiss,emisv,albe,albv,sigmav,sigmava)
 
 
-    albs=(albe-sigmav*albv)./((1-sigmav).^2+sigmav*albv.*albe-(sigmav*albv).^2);
+   albs=(albe-sigmav*albv)./((1-sigmav).^2+sigmav*albv.*albe-(sigmav*albv).^2);
+    i=or(albs>0.4,albs<0.05);
+
+    if i==1
+    albs=max(min(albs,0.05),0.4);
+    a=albs*sigmav^2;
+    b=-sigmav*(1+albs*albe);
+    c=albe-albs*(1-sigmav)^2;
+
+    f = @(x) a*x^2+b*x+c;
+
+    lbv=fzero(f,albe);
+    albv=min(max(albv,0.05),0.3);
+    end
+
+    albe=sigmav*albv+(albs*(1-sigmav)^2)/(1-sigmav*albs*albv);
 
 	v1=1-albv*albs.*sigmav;
     v1a=1-albv*albs.*sigmava;
@@ -22,4 +37,4 @@ function [albs,arns,brns,crns,arnv,brnv,crnv,cras,crav]=calcrn_vect(rg,ratm,emis
     crnv=rg*(1-albv)*sigmav.*(1+(albs.*v4)./v1)+sigmava*emisv*ratm.*(1+(v4a.*v3)./v5a);
     crav=sigmava*emisv*ratm.*(1+(v4a.*v3)./v5a);
 
-end
\ No newline at end of file
+end