diff --git a/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.C b/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.C
index 11f09d9697b7640a3aaa0dddbe23cbbae9886012..7075f2152a872ea51aa53f256a4f85ce292bd078 100644
--- a/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.C
+++ b/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.C
@@ -39,6 +39,13 @@ Foam::Analytical<Type>::Analytical
 {}
 
 
+template<class Type>
+Foam::Analytical<Type>::Analytical(const Analytical& is)
+:
+    IntegrationScheme<Type>(is)
+{}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 template<class Type>
@@ -59,8 +66,11 @@ Foam::Analytical<Type>::integrate
 ) const
 {
     typename IntegrationScheme<Type>::integrationResult retValue;
-    retValue.average() = alpha + (phi - alpha)*(1 - exp(-beta*dt))/(beta*dt);
-    retValue.value() =  alpha + (phi - alpha)*exp(-beta*dt);
+
+    const scalar expTerm = exp(min(50, -beta*dt));
+
+    retValue.average() = alpha + (phi - alpha)*(1 - expTerm)/(beta*dt);
+    retValue.value() =  alpha + (phi - alpha)*expTerm;
 
     return retValue;
 }
diff --git a/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H b/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H
index e18af027f9cc9c90e37b9161642066b8b23797e9..39c6b3f8230118e83d9913e8811e4674b2ac64e2 100644
--- a/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H
+++ b/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H
@@ -59,6 +59,18 @@ public:
         //- Construct from components
         Analytical(const word& phiName, const dictionary& dict);
 
+        //- Copy constructor
+        Analytical(const Analytical& is);
+
+        //- Construct and return clone
+        virtual autoPtr<IntegrationScheme<Type> > clone() const
+        {
+            return autoPtr<IntegrationScheme<Type> >
+            (
+                new Analytical<Type>(*this)
+            );
+        }
+
 
     //- Destructor
     virtual ~Analytical();
diff --git a/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.C b/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.C
index e065b54780c2bd1a24ee7a34f8b7b21ab1955aab..0ae13e16e833f7e6a4943d1178f45e8f091859f8 100644
--- a/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.C
+++ b/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.C
@@ -39,6 +39,13 @@ Foam::Euler<Type>::Euler
 {}
 
 
+template<class Type>
+Foam::Euler<Type>::Euler(const Euler& is)
+:
+    IntegrationScheme<Type>(is)
+{}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 template<class Type>
diff --git a/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H b/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H
index 39989c22e6ad173de9059446c603703058380688..b0ffb86ef22134ad66525fefde24da44a673b4df 100644
--- a/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H
+++ b/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H
@@ -59,6 +59,15 @@ public:
         //- Construct from components
         Euler(const word& phiName, const dictionary& dict);
 
+        //- Copy constructor
+        Euler(const Euler& is);
+
+        //- Construct and return clone
+        virtual autoPtr<IntegrationScheme<Type> > clone() const
+        {
+            return autoPtr<IntegrationScheme<Type> >(new Euler<Type>(*this));
+        }
+
 
     //- Destructor
     virtual ~Euler();
diff --git a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C
index 0388788c8e2a9e1aec62b1a11191e3ca6b332570..33efb86687b5dca72dcc79fa30ac4c93faab31f7 100644
--- a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C
+++ b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C
@@ -39,6 +39,14 @@ Foam::IntegrationScheme<Type>::IntegrationScheme
 {}
 
 
+template<class Type>
+Foam::IntegrationScheme<Type>::IntegrationScheme(const IntegrationScheme& is)
+:
+    phiName_(is.phiName_),
+    dict_(is.dict_)
+{}
+
+
 // * * * * * * * * * * * * * * * * Destructor    * * * * * * * * * * * * * * //
 
 template<class Type>
@@ -48,6 +56,38 @@ Foam::IntegrationScheme<Type>::~IntegrationScheme()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
+template<class Type>
+typename Foam::IntegrationScheme<Type>::integrationResult
+Foam::IntegrationScheme<Type>::integrate
+(
+    const Type phi,
+    const scalar dt,
+    const Type alpha,
+    const scalar beta
+) const
+{
+    notImplemented
+    (
+        "Foam::IntegrationScheme<Type>::integrationResult"
+        "Foam::IntegrationScheme<Type>::integrate"
+        "("
+            "const Type, "
+            "const scalar, "
+            "const Type, "
+            "const scalar"
+        ") const"
+    );
+
+    typename IntegrationScheme<Type>::integrationResult retValue;
+    retValue.average() = pTraits<Type>::zero;
+    retValue.value() = pTraits<Type>::zero;
+
+    return retValue;
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #include "IntegrationSchemeNew.C"
 
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H
index 6bf976d081f3546ec6768bdda5dd3da3245439ab..3558bdc83be1b6e8ed1a7db1dbd0847a3de71906 100644
--- a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H
+++ b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H
@@ -121,9 +121,6 @@ private:
 
     // Private Member Functions
 
-        //- Disallow default bitwise copy construct
-        IntegrationScheme(const IntegrationScheme&);
-
         //- Disallow default bitwise assignment
         void operator=(const IntegrationScheme&);
 
@@ -154,6 +151,18 @@ public:
         //- Construct from components
         IntegrationScheme(const word& phiName, const dictionary& dict);
 
+        //- Copy constructor
+        IntegrationScheme(const IntegrationScheme& is);
+
+        //- Construct and return clone
+        virtual autoPtr<IntegrationScheme<Type> > clone() const
+        {
+            return autoPtr<IntegrationScheme<Type> >
+            (
+                new IntegrationScheme<Type>(*this)
+            );
+        }
+
 
     // Selectors
 
@@ -178,7 +187,7 @@ public:
             const scalar dt,
             const Type alpha,
             const scalar beta
-        ) const = 0;
+        ) const;
 };