this question might look a little trivial, it does happen in our process as the data is not clean. I have a data frame looks like

```
let tt = Series.ofObservations[ 1=>10.0; 3=>20.0;5=> 30.0; 6=> 40.0; ]
let tt2 = Series.ofObservations[1=>  Double.NaN; 3=> 5.5; 6=>Double.NaN  ]
let tt3 = Series.ofObservations[1=> "aaa"; 3=> "bb"; 6=>"ccc" ]
let f1 = frame ["cola" => tt; "colb"=>tt2;]
f1.AddColumn("colc", tt3)

 f1.Print();;
     cola colb      colc      
1 -> 10   <missing> aaa       
3 -> 20   5.5       bb        
5 -> 30   <missing> <missing> 
6 -> 40   <missing> ccc   

```

I need to filter out any row until the first row with a value in colb 

```
     cola colb      colc      
3 -> 20   5.5       bb        
5 -> 30   <missing> <missing> 
6 -> 40   <missing> ccc

```

The only solution i can come up with is utilising a mutable flag which breaks the integrity of functional programming. maybe a this filtering missing head can be hidden in a library. but it still makes me wonder if i did not do it the right way.

```
let flag = ref false
let filteredF1 = f1 |> Frame.filterRows(fun k v -> 
                                  match !flag, v.TryGetAs<float>("colb") with 
                                  | false, OptionalValue.Missing -> flag := false
                                  | false, _ -> flag := true
                                  | true, _ -> ()
                                  !flag
                                  ) 

```

This is not really a problem of Deedle but more to do with how should immutability achieve this. Something easily achievable in Python and VBA seems to be very hard to do in F#.

In statistic calculation situation like this happens where multiple serieses have a different starting time. And after the starting point (retaining) the data point containing the missing value is important as missing value means something.

Any advice is appreciated.
cassby