Index: trunk/sources/HeuristicLab.SupportVectorMachines/3.2/Predictor.cs
===================================================================
--- trunk/sources/HeuristicLab.SupportVectorMachines/3.2/Predictor.cs	(revision 2372)
+++ trunk/sources/HeuristicLab.SupportVectorMachines/3.2/Predictor.cs	(revision 2373)
@@ -41,5 +41,11 @@
     private string targetVariable;
     private int minTimeOffset;
+    public int MinTimeOffset {
+      get { return minTimeOffset; }
+    }
     private int maxTimeOffset;
+    public int MaxTimeOffset {
+      get { return maxTimeOffset; }
+    }
 
     public Predictor() : base() { } // for persistence
Index: trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorBuilder.cs
===================================================================
--- trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorBuilder.cs	(revision 2372)
+++ trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorBuilder.cs	(revision 2373)
@@ -39,4 +39,6 @@
       AddVariableInfo(new VariableInfo("TrainingSamplesStart", "Start index of the training set", typeof(IntData), VariableKind.In));
       AddVariableInfo(new VariableInfo("TrainingSamplesEnd", "End index of the training set", typeof(IntData), VariableKind.In));
+      AddVariableInfo(new VariableInfo("MaxTimeOffset", "(optional) highest allowed time offset value", typeof(IntData), VariableKind.In));
+      AddVariableInfo(new VariableInfo("MinTimeOffset", "(optional) lowest allowed time offset value", typeof(IntData), VariableKind.In));
       AddVariableInfo(new VariableInfo("PunishmentFactor", "The punishment factor limits the range of predicted values", typeof(DoubleData), VariableKind.In));
       AddVariableInfo(new VariableInfo("Predictor", "The predictor can be used to generate estimated values", typeof(IPredictor), VariableKind.New));
@@ -53,4 +55,8 @@
       int start = GetVariableValue<IntData>("TrainingSamplesStart", scope, true).Data;
       int end = GetVariableValue<IntData>("TrainingSamplesEnd", scope, true).Data;
+      IntData maxTimeOffsetData = GetVariableValue<IntData>("MaxTimeOffset", scope, true, false);
+      int maxTimeOffset = maxTimeOffsetData == null ? 0 : maxTimeOffsetData.Data;
+      IntData minTimeOffsetData = GetVariableValue<IntData>("MinTimeOffset", scope, true, false);
+      int minTimeOffset = minTimeOffsetData == null ? 0 : minTimeOffsetData.Data;
       double punishmentFactor = GetVariableValue<DoubleData>("PunishmentFactor", scope, true).Data;
 
@@ -63,5 +69,5 @@
       double range = ds.GetRange(targetVariable, start, end);
 
-      Predictor predictor = new Predictor(model, targetVariableName, variableNames);
+      Predictor predictor = new Predictor(model, targetVariableName, variableNames, minTimeOffset, maxTimeOffset);
       predictor.LowerPredictionLimit = mean - punishmentFactor * range;
       predictor.UpperPredictionLimit = mean + punishmentFactor * range;
Index: trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.Designer.cs	(revision 2372)
+++ trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.Designer.cs	(revision 2373)
@@ -49,4 +49,8 @@
       this.upperLimitTextbox = new System.Windows.Forms.TextBox();
       this.upperPredictionLimit = new System.Windows.Forms.Label();
+      this.maxTimeOffsetTextBox = new System.Windows.Forms.TextBox();
+      this.maxTimeOffsetLabel = new System.Windows.Forms.Label();
+      this.minTimeOffsetTextBox = new System.Windows.Forms.TextBox();
+      this.minTimeOffsetLabel = new System.Windows.Forms.Label();
       this.SuspendLayout();
       // 
@@ -54,5 +58,5 @@
       // 
       this.lowerPredictionLimit.AutoSize = true;
-      this.lowerPredictionLimit.Location = new System.Drawing.Point(3, 137);
+      this.lowerPredictionLimit.Location = new System.Drawing.Point(3, 189);
       this.lowerPredictionLimit.Name = "lowerPredictionLimit";
       this.lowerPredictionLimit.Size = new System.Drawing.Size(113, 13);
@@ -62,5 +66,5 @@
       // lowerLimitTextbox
       // 
-      this.lowerLimitTextbox.Location = new System.Drawing.Point(144, 134);
+      this.lowerLimitTextbox.Location = new System.Drawing.Point(144, 186);
       this.lowerLimitTextbox.Name = "lowerLimitTextbox";
       this.lowerLimitTextbox.ReadOnly = true;
@@ -70,5 +74,5 @@
       // upperLimitTextbox
       // 
-      this.upperLimitTextbox.Location = new System.Drawing.Point(144, 160);
+      this.upperLimitTextbox.Location = new System.Drawing.Point(144, 212);
       this.upperLimitTextbox.Name = "upperLimitTextbox";
       this.upperLimitTextbox.ReadOnly = true;
@@ -79,5 +83,5 @@
       // 
       this.upperPredictionLimit.AutoSize = true;
-      this.upperPredictionLimit.Location = new System.Drawing.Point(3, 163);
+      this.upperPredictionLimit.Location = new System.Drawing.Point(3, 215);
       this.upperPredictionLimit.Name = "upperPredictionLimit";
       this.upperPredictionLimit.Size = new System.Drawing.Size(113, 13);
@@ -85,8 +89,46 @@
       this.upperPredictionLimit.Text = "Upper Prediction Limit:";
       // 
+      // maxTimeOffsetTextBox
+      // 
+      this.maxTimeOffsetTextBox.Location = new System.Drawing.Point(144, 134);
+      this.maxTimeOffsetTextBox.Name = "maxTimeOffsetTextBox";
+      this.maxTimeOffsetTextBox.ReadOnly = true;
+      this.maxTimeOffsetTextBox.Size = new System.Drawing.Size(100, 20);
+      this.maxTimeOffsetTextBox.TabIndex = 18;
+      // 
+      // maxTimeOffsetLabel
+      // 
+      this.maxTimeOffsetLabel.AutoSize = true;
+      this.maxTimeOffsetLabel.Location = new System.Drawing.Point(3, 137);
+      this.maxTimeOffsetLabel.Name = "maxTimeOffsetLabel";
+      this.maxTimeOffsetLabel.Size = new System.Drawing.Size(81, 13);
+      this.maxTimeOffsetLabel.TabIndex = 17;
+      this.maxTimeOffsetLabel.Text = "Max time offset:";
+      // 
+      // minTimeOffsetTextBox
+      // 
+      this.minTimeOffsetTextBox.Location = new System.Drawing.Point(144, 160);
+      this.minTimeOffsetTextBox.Name = "minTimeOffsetTextBox";
+      this.minTimeOffsetTextBox.ReadOnly = true;
+      this.minTimeOffsetTextBox.Size = new System.Drawing.Size(100, 20);
+      this.minTimeOffsetTextBox.TabIndex = 20;
+      // 
+      // minTimeOffsetLabel
+      // 
+      this.minTimeOffsetLabel.AutoSize = true;
+      this.minTimeOffsetLabel.Location = new System.Drawing.Point(3, 163);
+      this.minTimeOffsetLabel.Name = "minTimeOffsetLabel";
+      this.minTimeOffsetLabel.Size = new System.Drawing.Size(78, 13);
+      this.minTimeOffsetLabel.TabIndex = 19;
+      this.minTimeOffsetLabel.Text = "Min time offset:";
+      // 
       // PredictorView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.minTimeOffsetTextBox);
+      this.Controls.Add(this.minTimeOffsetLabel);
+      this.Controls.Add(this.maxTimeOffsetTextBox);
+      this.Controls.Add(this.maxTimeOffsetLabel);
       this.Controls.Add(this.upperLimitTextbox);
       this.Controls.Add(this.upperPredictionLimit);
@@ -94,9 +136,13 @@
       this.Controls.Add(this.lowerPredictionLimit);
       this.Name = "PredictorView";
-      this.Size = new System.Drawing.Size(291, 193);
+      this.Size = new System.Drawing.Size(252, 240);
       this.Controls.SetChildIndex(this.lowerPredictionLimit, 0);
       this.Controls.SetChildIndex(this.lowerLimitTextbox, 0);
       this.Controls.SetChildIndex(this.upperPredictionLimit, 0);
       this.Controls.SetChildIndex(this.upperLimitTextbox, 0);
+      this.Controls.SetChildIndex(this.maxTimeOffsetLabel, 0);
+      this.Controls.SetChildIndex(this.maxTimeOffsetTextBox, 0);
+      this.Controls.SetChildIndex(this.minTimeOffsetLabel, 0);
+      this.Controls.SetChildIndex(this.minTimeOffsetTextBox, 0);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -110,4 +156,8 @@
     private System.Windows.Forms.TextBox upperLimitTextbox;
     private System.Windows.Forms.Label upperPredictionLimit;
+    private System.Windows.Forms.TextBox maxTimeOffsetTextBox;
+    private System.Windows.Forms.Label maxTimeOffsetLabel;
+    private System.Windows.Forms.TextBox minTimeOffsetTextBox;
+    private System.Windows.Forms.Label minTimeOffsetLabel;
 
   }
Index: trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.cs
===================================================================
--- trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.cs	(revision 2372)
+++ trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.cs	(revision 2373)
@@ -34,7 +34,8 @@
     private Predictor predictor;
 
-    public PredictorView() : base() {
+    public PredictorView()
+      : base() {
       InitializeComponent();
-    }    
+    }
 
     public PredictorView(Predictor predictor)
@@ -43,10 +44,8 @@
       this.predictor = predictor;
       UpdateControls();
-    }
-
-    protected override void UpdateControls() {
-      base.UpdateControls();
-      lowerLimitTextbox.Text = predictor.LowerPredictionLimit.ToString();
-      upperLimitTextbox.Text = predictor.UpperPredictionLimit.ToString();
+      lowerLimitTextbox.DataBindings.Add(new Binding("Text", predictor, "LowerPredictionLimit"));
+      upperLimitTextbox.DataBindings.Add(new Binding("Text", predictor, "UpperPredictionLimit"));
+      maxTimeOffsetTextBox.DataBindings.Add(new Binding("Text", predictor, "MaxTimeOffset"));
+      minTimeOffsetTextBox.DataBindings.Add(new Binding("Text", predictor, "MinTimeOffset"));
     }
   }
