diff --git a/WindStressPRM/WindStressPRM.cs b/WindStressPRM/WindStressPRM.cs
index 3e63db283dd50ae879315d121fbf089cec302ffe..ecbd4ce141b55ff897cc2b0370d49e4a8e8fdf58 100644
--- a/WindStressPRM/WindStressPRM.cs
+++ b/WindStressPRM/WindStressPRM.cs
@@ -121,7 +121,7 @@ namespace WindStressPRM
                 return false;
             }
             // пустые данные
-            if (res1) {
+            if (res1 == res2 == true) {
                 return true;
             }
             ///Скорость ветра на высоте 10м от поверхности на Земле не может превышать 70м/c
@@ -178,17 +178,23 @@ namespace WindStressPRM
         /// <returns></returns>
         public bool CheckValue()
         {
-            bool c5 = Double.IsNaN(Wind5);
-            bool c10 = Double.IsNaN(Wind10);
-            bool c15 = Double.IsNaN(Wind15);
-            if (c5 != c10 || c5 != c15 || c5 != c10) {
-                return false;
+            double w5 = Wind5;
+            double w10 = Wind10;
+            double w15 = Wind15;
+            if (Double.IsNaN(w5)) // if is Nan - zerofied it.
+            {
+                w5 = 0;
             }
-            if (c5) {
-                return true;
+            if (Double.IsNaN(w10)) 
+            {
+                w10 = 0;
+            }
+            if (Double.IsNaN(w15)) 
+            {
+                w15 = 0;
             }
             // ветер по модулю не должен превышать 70м/с
-            return Math.Abs(Wind5) < 70 && Math.Abs(Wind10) < 70 && Math.Abs(Wind15) < 70;
+            return Math.Abs(w5) < 70 && Math.Abs(w10) < 70 && Math.Abs(w15) < 70;
         }
     }
     /// <summary>
@@ -523,14 +529,7 @@ namespace WindStressPRM
             //fill output
             Output output = new Output();
             output.DisabledStations = new List<PowerStation>();
-            output.DisabledLines = new List<Powerline>();
-            foreach (Powerline line in input.PowerLines)
-            {
-                if (line.IsBroken)
-                {
-                    output.DisabledLines.Add(line);
-                }
-            }
+            output.DisabledLines = prmBrokenLines;
             foreach (PowerStation powerStation in input.PowerStations)
             {
                 //stations of type pole can be disabled if the line is broken 
@@ -720,6 +719,13 @@ namespace WindStressPRM
                 double uwind = interpol(coords, FunctionType.FunctionVelocityX);
                 double vwind = interpol(coords, FunctionType.FunctionVelocityY);
                 double climwind = interpol(coords, climateType);
+                if (Double.IsNaN(uwind) || Double.IsNaN(vwind) || Double.IsNaN(climwind)) 
+                {
+                    // interpolation fail. we can't say everything about here
+                    // discussion: also we can save these points for detail analysis
+                    res = false;
+                    continue;
+                }
                 double umod = Math.Sqrt(uwind * uwind + vwind * vwind); ;
                 double angleline = Math.Atan2((coord2.Y - coord1.Y), (coord2.X - coord1.X));
                 double anglewind = Math.Atan2(vwind, uwind) - angleline;
@@ -954,7 +960,8 @@ namespace WindStressPRM
                 // tests indicates that value at test-cell is missed. 
                 if (testTopRight && testTopLeft && testBotLeft && testBotRight) 
                 {
-                    throw new Exception("Current value in such a bad place, you need to fill these place with raster values");
+                    // Current value in such a bad place, you need to fill these place with raster values
+                    return Double.NaN;
                 }
                 int count = 0;
                 if (testBotLeft)