Index: src/Potentials/Specifics/ManyBodyPotential_Tersoff.hpp
===================================================================
--- src/Potentials/Specifics/ManyBodyPotential_Tersoff.hpp	(revision f48ad38cd0929af71770a13f3b37615e477e02b2)
+++ src/Potentials/Specifics/ManyBodyPotential_Tersoff.hpp	(revision d032921179582b5da1ab3dfa13a0d02d06251602)
@@ -16,4 +16,5 @@
 #include <boost/function.hpp>
 #include <cmath>
+#include <limits>
 
 #include "CodePatterns/Assert.hpp"
@@ -120,4 +121,40 @@
    */
   results_t parameter_derivative(const arguments_t &arguments, const size_t index) const;
+
+  /** States whether lower and upper boundaries should be used to constraint
+   * the parameter search for this function model.
+   *
+   * \return true - constraints should be used, false - else
+   */
+  bool isBoxConstraint() const {
+    return true;
+  }
+
+  /** Returns a vector which are the lower boundaries for each parameter_t
+   * of this FunctionModel.
+   *
+   * \return vector of parameter_t resembling lowest allowed values
+   */
+  parameters_t getLowerBoxConstraints() const {
+    parameters_t lowerbound(getParameterDimension(), -std::numeric_limits<double>::max());
+//    lowerbound[R] = 0.;
+//    lowerbound[S] = 0.;
+//    lowerbound[lambda3] = 0.;
+//    lowerbound[alpha] = 0.;
+    lowerbound[beta] = std::numeric_limits<double>::min();
+    lowerbound[n] = std::numeric_limits<double>::min();
+    lowerbound[c] = std::numeric_limits<double>::min();
+    lowerbound[d] = std::numeric_limits<double>::min();
+    return lowerbound;
+  }
+
+  /** Returns a vector which are the upper boundaries for each parameter_t
+   * of this FunctionModel.
+   *
+   * \return vector of parameter_t resembling highest allowed values
+   */
+  parameters_t getUpperBoxConstraints() const {
+    return parameters_t(getParameterDimension(), std::numeric_limits<double>::max());
+  }
 
 private:
Index: src/Potentials/Specifics/PairPotential_Harmonic.hpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Harmonic.hpp	(revision f48ad38cd0929af71770a13f3b37615e477e02b2)
+++ src/Potentials/Specifics/PairPotential_Harmonic.hpp	(revision d032921179582b5da1ab3dfa13a0d02d06251602)
@@ -14,4 +14,6 @@
 #include <config.h>
 #endif
+
+#include <limits>
 
 #include "CodePatterns/Assert.hpp"
@@ -98,4 +100,33 @@
   results_t parameter_derivative(const arguments_t &arguments, const size_t index) const;
 
+  /** States whether lower and upper boundaries should be used to constraint
+   * the parameter search for this function model.
+   *
+   * \return true - constraints should be used, false - else
+   */
+  bool isBoxConstraint() const {
+    return true;
+  }
+
+  /** Returns a vector which are the lower boundaries for each parameter_t
+   * of this FunctionModel.
+   *
+   * \return vector of parameter_t resembling lowest allowed values
+   */
+  parameters_t getLowerBoxConstraints() const {
+    parameters_t lowerbounds(getParameterDimension(), -std::numeric_limits<double>::max());
+    lowerbounds[equilibrium_distance] = 0.;
+    return lowerbounds;
+  }
+
+  /** Returns a vector which are the upper boundaries for each parameter_t
+   * of this FunctionModel.
+   *
+   * \return vector of parameter_t resembling highest allowed values
+   */
+  parameters_t getUpperBoxConstraints() const {
+    return parameters_t(getParameterDimension(), std::numeric_limits<double>::max());
+  }
+
   enum parameter_enum_t {
     spring_constant=0,
Index: src/Potentials/Specifics/PairPotential_Morse.hpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Morse.hpp	(revision f48ad38cd0929af71770a13f3b37615e477e02b2)
+++ src/Potentials/Specifics/PairPotential_Morse.hpp	(revision d032921179582b5da1ab3dfa13a0d02d06251602)
@@ -14,4 +14,6 @@
 #include <config.h>
 #endif
+
+#include <limits>
 
 #include "CodePatterns/Assert.hpp"
@@ -99,4 +101,33 @@
   results_t parameter_derivative(const arguments_t &arguments, const size_t index) const;
 
+  /** States whether lower and upper boundaries should be used to constraint
+   * the parameter search for this function model.
+   *
+   * \return true - constraints should be used, false - else
+   */
+  bool isBoxConstraint() const {
+    return true;
+  }
+
+  /** Returns a vector which are the lower boundaries for each parameter_t
+   * of this FunctionModel.
+   *
+   * \return vector of parameter_t resembling lowest allowed values
+   */
+  parameters_t getLowerBoxConstraints() const {
+    parameters_t lowerbound(getParameterDimension(), -std::numeric_limits<double>::max());
+    lowerbound[equilibrium_distance] = 0.;
+    return lowerbound;
+  }
+
+  /** Returns a vector which are the upper boundaries for each parameter_t
+   * of this FunctionModel.
+   *
+   * \return vector of parameter_t resembling highest allowed values
+   */
+  parameters_t getUpperBoxConstraints() const {
+    return parameters_t(getParameterDimension(), std::numeric_limits<double>::max());
+  }
+
   enum parameter_enum_t {
     spring_constant=0,
