Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis.Views/3.3/ResultsView.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis.Views/3.3/ResultsView.cs	(revision 4456)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis.Views/3.3/ResultsView.cs	(revision 4457)
@@ -145,27 +145,29 @@
 
       for (int row = start; row < end; row++) {
-        // prepare evaluators for each target variable for a new prediction window
-        foreach (var entry in evaluators) {
-          double referenceOriginalValue = Content.ProblemData.Dataset[entry.Key, row - 1];
-          foreach (IOnlineTimeSeriesPrognosisEvaluator evaluator in entry.Value.OfType<IOnlineTimeSeriesPrognosisEvaluator>()) {
-            evaluator.StartNewPredictionWindow(referenceOriginalValue);
+        if (string.IsNullOrEmpty(Content.ConditionalEvaluationVariable) || Content.ProblemData.Dataset[Content.ConditionalEvaluationVariable, row] != 0) {
+          // prepare evaluators for each target variable for a new prediction window
+          foreach (var entry in evaluators) {
+            double referenceOriginalValue = Content.ProblemData.Dataset[entry.Key, row - 1];
+            foreach (IOnlineTimeSeriesPrognosisEvaluator evaluator in entry.Value.OfType<IOnlineTimeSeriesPrognosisEvaluator>()) {
+              evaluator.StartNewPredictionWindow(referenceOriginalValue);
+            }
           }
-        }
-        List<string> targetVariables = Content.ProblemData.TargetVariables.CheckedItems.Select(x => x.Value.Value).ToList();
+          List<string> targetVariables = Content.ProblemData.TargetVariables.CheckedItems.Select(x => x.Value.Value).ToList();
 
-        int timestep = 0;
-        foreach (double[] x in Content.GetPrognosis(row)) {
-          int targetIndex = 0;
-          foreach (var targetVariable in targetVariables) {
-            double originalValue = Content.ProblemData.Dataset[targetVariable, row + timestep];
-            double estimatedValue = x[targetIndex];
-            if (IsValidValue(originalValue) && IsValidValue(estimatedValue)) {
-              foreach (IOnlineEvaluator evaluator in evaluators[targetVariable]) {
-                evaluator.Add(originalValue, estimatedValue);
+          int timestep = 0;
+          foreach (double[] x in Content.GetPrognosis(row)) {
+            int targetIndex = 0;
+            foreach (var targetVariable in targetVariables) {
+              double originalValue = Content.ProblemData.Dataset[targetVariable, row + timestep];
+              double estimatedValue = x[targetIndex];
+              if (IsValidValue(originalValue) && IsValidValue(estimatedValue)) {
+                foreach (IOnlineEvaluator evaluator in evaluators[targetVariable]) {
+                  evaluator.Add(originalValue, estimatedValue);
+                }
               }
+              targetIndex++;
             }
-            targetIndex++;
+            timestep++;
           }
-          timestep++;
         }
       }
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis/3.3/Symbolic/Analyzer/ValidationBestScaledSymbolicTimeSeriesPrognosisSolutionAnalyzer.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis/3.3/Symbolic/Analyzer/ValidationBestScaledSymbolicTimeSeriesPrognosisSolutionAnalyzer.cs	(revision 4456)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis/3.3/Symbolic/Analyzer/ValidationBestScaledSymbolicTimeSeriesPrognosisSolutionAnalyzer.cs	(revision 4457)
@@ -295,5 +295,5 @@
         model.Description = "Best solution on validation partition found over the whole run.";
 
-        var solution = new SymbolicTimeSeriesPrognosisSolution(ProblemData, model, PredictionHorizon.Value);
+        var solution = new SymbolicTimeSeriesPrognosisSolution(ProblemData, model, PredictionHorizon.Value, conditionalVariableName);
         solution.Name = BestSolutionParameterName;
         solution.Description = "Best solution on validation partition found over the whole run.";
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis/3.3/Symbolic/SymbolicTimeSeriesPrognosisSolution.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis/3.3/Symbolic/SymbolicTimeSeriesPrognosisSolution.cs	(revision 4456)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.TimeSeriesPrognosis/3.3/Symbolic/SymbolicTimeSeriesPrognosisSolution.cs	(revision 4457)
@@ -35,5 +35,5 @@
   [StorableClass]
   [Item("SymbolicTimeSeriesPrognosisSolution", "Represents a solution for time series prognosis.")]
-  public class SymbolicTimeSeriesPrognosisSolution : NamedItem, IMultiVariateDataAnalysisSolution {
+  public class SymbolicTimeSeriesPrognosisSolution : NamedItem, IMultiVariateDataAnalysisSolution, IStorableContent {
     [Storable]
     private MultiVariateDataAnalysisProblemData problemData;
@@ -42,4 +42,8 @@
     [Storable]
     private int horizon;
+    [Storable]
+    private string conditionalEvaluationVariable;
+
+    public string FileName { get; set; }
 
     [StorableConstructor]
@@ -50,9 +54,10 @@
     }
 
-    public SymbolicTimeSeriesPrognosisSolution(MultiVariateDataAnalysisProblemData problemData, SymbolicTimeSeriesPrognosisModel model, int horizon)
+    public SymbolicTimeSeriesPrognosisSolution(MultiVariateDataAnalysisProblemData problemData, SymbolicTimeSeriesPrognosisModel model, int horizon, string conditionalEvaluationVariable)
       : this() {
       this.problemData = problemData;
       this.model = model;
       this.horizon = horizon;
+      this.conditionalEvaluationVariable = conditionalEvaluationVariable;
     }
 
@@ -82,4 +87,14 @@
           model = value;
           RaiseModelChanged();
+        }
+      }
+    }
+
+    public string ConditionalEvaluationVariable {
+      get { return conditionalEvaluationVariable; }
+      set {
+        if (conditionalEvaluationVariable != value) {
+          conditionalEvaluationVariable = value;
+          RaiseEstimatedValuesChanged();
         }
       }
@@ -182,4 +197,5 @@
       clone.model = (SymbolicTimeSeriesPrognosisModel)cloner.Clone(model);
       clone.horizon = horizon;
+      clone.conditionalEvaluationVariable = conditionalEvaluationVariable;
       return clone;
     }
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate/3.3/MultiVariateDataAnalysisProblem.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate/3.3/MultiVariateDataAnalysisProblem.cs	(revision 4456)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate/3.3/MultiVariateDataAnalysisProblem.cs	(revision 4457)
@@ -33,9 +33,11 @@
   [Creatable("Problems")]
   [StorableClass]
-  public class MultiVariateDataAnalysisProblem : ParameterizedNamedItem, IMultiVariateDataAnalysisProblem {
+  public class MultiVariateDataAnalysisProblem : ParameterizedNamedItem, IMultiVariateDataAnalysisProblem, IStorableContent {
     private const string MultiVariateDataAnalysisProblemDataParameterName = "MultiVariateDataAnalysisProblem";
     public override Image ItemImage {
       get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Type; }
     }
+
+    public string FileName { get; set; }
 
     #region Parameter Properties
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate/3.3/MultiVariateDataAnalysisProblemData.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate/3.3/MultiVariateDataAnalysisProblemData.cs	(revision 4456)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate/3.3/MultiVariateDataAnalysisProblemData.cs	(revision 4457)
@@ -32,6 +32,7 @@
   [Item("MultiVariateDataAnalysisProblemData", "Represents an item containing all data defining a multi-variate data analysis problem.")]
   [StorableClass]
-  public class MultiVariateDataAnalysisProblemData : ParameterizedNamedItem {
+  public class MultiVariateDataAnalysisProblemData : ParameterizedNamedItem, IStorableContent {
     private bool suppressEvents = false;
+    public string FileName { get; set; }
     #region default data
     // y0 = x^4 + x^3 + x^2 + x
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblem.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblem.cs	(revision 4456)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblem.cs	(revision 4457)
@@ -33,9 +33,11 @@
   [Creatable("Problems")]
   [StorableClass]
-  public class DataAnalysisProblem : ParameterizedNamedItem, IDataAnalysisProblem {
+  public class DataAnalysisProblem : ParameterizedNamedItem, IDataAnalysisProblem, IStorableContent {
     private const string DataAnalysisProblemDataParameterName = "DataAnalysisProblemData";
     public override Image ItemImage {
       get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Type; }
     }
+
+    public string FileName { get; set; }
 
     #region Parameter Properties
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblemData.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblemData.cs	(revision 4456)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblemData.cs	(revision 4457)
@@ -33,6 +33,11 @@
   [Item("DataAnalysisProblemData", "Represents an item containing all data defining a data analysis problem.")]
   [StorableClass]
-  public class DataAnalysisProblemData : ParameterizedNamedItem {
+  public class DataAnalysisProblemData : ParameterizedNamedItem, IStorableContent {
     private bool suppressEvents = false;
+
+    #region IStorableContent Members
+    public string Filename { get; set; }
+    #endregion
+
     #region default data
     // y = x^4 + x^3 + x^2 + x
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisSolution.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisSolution.cs	(revision 4456)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisSolution.cs	(revision 4457)
@@ -33,5 +33,10 @@
   [Item("DataAnalysisSolution", "Represents a solution for a data analysis problem which can be visualized in the GUI.")]
   [StorableClass]
-  public abstract class DataAnalysisSolution : NamedItem {
+  public abstract class DataAnalysisSolution : NamedItem, IStorableContent {
+    #region IStorableContent Members
+    public string Filename { get; set; }
+    #endregion
+
+
     protected DataAnalysisSolution()
       : base() { }
