diff --git a/C++/nonLin/nonLinCF.cc b/C++/nonLin/nonLinCF.cc
index 7b1e0e87c617d5175910e3c59ea0078088dfa853..471f662c2bb8d825bb7831c601c34746a0e9353a 100644
--- a/C++/nonLin/nonLinCF.cc
+++ b/C++/nonLin/nonLinCF.cc
@@ -472,8 +472,20 @@ void nonLinCF_harmonicBalance<T, DIM>::Update(const vector<shared_ptr<Coefficien
                 val_in_c = 0;
                 for(j = 0; j!= ptrInput_i.size(); ++j){
                     ptrInput_i[j]->Evaluate(this->mips[el][ip], fV_tmp);
-
-                    val_in_c += fV_tmp(0) * std::exp( 1i * omega_i[j] * ti[i]);
+                    if(ptrInput_i.size() == omega_i.size()){
+                        // complex
+                        val_in_c += fV_tmp(0) * std::exp( 1i * omega_i[j] * ti[i]);
+                    }
+                    else{
+                        if ( j % 2 == 0){
+                            // cosine                             
+                            val_in_c += fV_tmp(0) * std::cos(omega_i[static_cast<unsigned int>(j/2)] * ti[i]);
+                        }
+                        else{
+                            // sine
+                            val_in_c += fV_tmp(0) * std::sin(omega_i[static_cast<unsigned int>(j/2)] * ti[i]);
+                        }
+                    }
                 }
 
                 // TODO: let the user decide....