 
 				d_LFCT[idx] = intersection.X();
 				d_LFCP[idx] = intersection.Y();
+
+				if (d_LFCT[idx] == kFloatMissing)
+				{
+					// Intersection not found, use exact level value
+					d_LFCT[idx] = Tenv;
+					d_LFCP[idx] = Penv;
+				}
 			}
 
 			assert(d_LFCT[idx] > 100);


	CUDA_CHECK(cudaStreamCreate(&stream));

	auto h_basePenv = PrepareInfo(basePenvInfo, stream);
	auto h_prevZenv = PrepareInfo(prevZenvInfo, stream);
	auto h_prevTenv = PrepareInfo(prevTenvInfo, stream);
	auto h_prevPenv = PrepareInfo(prevPenvInfo, stream);

	double* d_Tparcel = 0;
	double* d_Piter = 0;
	double* d_Titer = 0;


	curLevel.Value(curLevel.Value() - 1);

	auto hPa100 = h->LevelForHeight(myTargetInfo->Producer(), 100.);

	while (curLevel.Value() > hPa100.first.Value())
	{
		auto ZenvInfo = Fetch(conf, ftime, curLevel, param("HL-M"), ftype);
		auto TenvInfo = Fetch(conf, ftime, curLevel, param("T-K"), ftype);
