Index: /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/ProbabilisticTreeCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/ProbabilisticTreeCreator.cs	(revision 5924)
+++ /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/ProbabilisticTreeCreator.cs	(revision 5925)
@@ -153,4 +153,5 @@
         } else {
           var allowedSymbols = (from s in parent.Grammar.Symbols
+                                where s.InitialFrequency > 0.0
                                 where parent.Grammar.IsAllowedChildSymbol(parent.Symbol, s, argumentIndex)
                                 where parent.Grammar.GetMinimumExpressionDepth(s) + extensionDepth - 1 < maxDepth
@@ -200,4 +201,5 @@
       // determine possible symbols that will lead to the smallest possible tree
       var possibleSymbols = (from s in parent.Grammar.GetAllowedChildSymbols(parent.Symbol, childIndex)
+                             where s.InitialFrequency > 0.0
                              group s by parent.Grammar.GetMinimumExpressionLength(s) into g
                              orderby g.Key
@@ -239,6 +241,7 @@
       for (int i = 0; i < maxArity; i++) {
         aggregatedLongestExpressionLength += (from s in node.Grammar.GetAllowedChildSymbols(node.Symbol, i)
+                                              where s.InitialFrequency > 0.0
                                               select node.Grammar.GetMaximumExpressionLength(s)).Max();
-        if (aggregatedLongestExpressionLength < targetLength) minArity = i;
+        if (aggregatedLongestExpressionLength < targetLength) minArity = i + 1;
         else break;
       }
@@ -249,4 +252,5 @@
       for (int i = 0; i < maxArity; i++) {
         aggregatedShortestExpressionLength += (from s in node.Grammar.GetAllowedChildSymbols(node.Symbol, i)
+                                               where s.InitialFrequency > 0.0
                                                select node.Grammar.GetMinimumExpressionLength(s)).Min();
         if (aggregatedShortestExpressionLength > targetLength) {
Index: /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Manipulators/ChangeNodeTypeManipulation.cs
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Manipulators/ChangeNodeTypeManipulation.cs	(revision 5924)
+++ /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Manipulators/ChangeNodeTypeManipulation.cs	(revision 5925)
@@ -53,4 +53,5 @@
                                                       // do not replace the existing symbol with itself
                                                       where symbol.Name != subtree.Symbol.Name
+                                                      where symbol.InitialFrequency > 0
                                                       where existingSubtreeCount <= parent.Grammar.GetMaximumSubtreeCount(symbol)
                                                       where existingSubtreeCount >= parent.Grammar.GetMinimumSubtreeCount(symbol)
Index: /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Manipulators/ReplaceBranchManipulation.cs
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Manipulators/ReplaceBranchManipulation.cs	(revision 5924)
+++ /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Manipulators/ReplaceBranchManipulation.cs	(revision 5925)
@@ -78,4 +78,5 @@
                                                       // do not replace symbol with the same symbol
                                                       where symbol.Name != subtree.Symbol.Name
+                                                      where symbol.InitialFrequency > 0
                                                       where parent.Grammar.GetMinimumExpressionDepth(symbol) <= maxDepth
                                                       where parent.Grammar.GetMinimumExpressionLength(symbol) <= maxLength
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisExpressionTreeInterpreter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisExpressionTreeInterpreter.cs	(revision 5924)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisExpressionTreeInterpreter.cs	(revision 5925)
@@ -364,11 +364,11 @@
         case OpCodes.Derivative: {
             int savedPc = state.ProgramCounter;
-            double f_0 = Evaluate(dataset, ref row, state); ; row--;
+            double f_0 = Evaluate(dataset, ref row, state); row--;
             state.ProgramCounter = savedPc;
-            double f_1 = Evaluate(dataset, ref row, state); ; row -= 2;
+            double f_1 = Evaluate(dataset, ref row, state); row -= 2;
             state.ProgramCounter = savedPc;
-            double f_3 = Evaluate(dataset, ref row, state); ; row--;
+            double f_3 = Evaluate(dataset, ref row, state); row--;
             state.ProgramCounter = savedPc;
-            double f_4 = Evaluate(dataset, ref row, state); ;
+            double f_4 = Evaluate(dataset, ref row, state); 
             row += 4;
 
