diff --git a/PG-PuReMD/src/cuda/cuda_valence_angles.cu b/PG-PuReMD/src/cuda/cuda_valence_angles.cu
index 996ab0ef0b736900bf08689a4ba9aca03ea57b08..09c288b7a4905a022b8511f0a3fde8b456a46635 100644
--- a/PG-PuReMD/src/cuda/cuda_valence_angles.cu
+++ b/PG-PuReMD/src/cuda/cuda_valence_angles.cu
@@ -114,7 +114,7 @@ CUDA_GLOBAL void Cuda_Valence_Angles_Part1( reax_atom *my_atoms,
     else
     {
         vlpadj = workspace.nlp[j];
-        dSBO2 = (prod_SBO - 1.0) * (1.0 - p_val8 * workspace.dDelta_lp[j]);
+        dSBO2 = (prod_SBO - 1.0) * (1.0 + p_val8 * workspace.dDelta_lp[j]);
     }
 
     SBO = SBOp + (1.0 - prod_SBO) * (-workspace.Delta_boc[j] - p_val8 * vlpadj);
diff --git a/PG-PuReMD/src/nonbonded.c b/PG-PuReMD/src/nonbonded.c
index cc86a3a2c60d165abe045308b74f20d7a7767c47..55b3cbefbcaad6290ffe9e44b302c9941ae008a8 100644
--- a/PG-PuReMD/src/nonbonded.c
+++ b/PG-PuReMD/src/nonbonded.c
@@ -206,7 +206,7 @@ void vdW_Coulomb_Energy( reax_system const * const system,
                 if ( control->virial == 0 )
                 {
                     rvec_ScaledAdd( workspace->f[i],
-                            -(CEvd + CEclmb) / r_ij, far_nbr_list->far_nbr_list.dvec[pj] );
+                            -1.0 * (CEvd + CEclmb) / r_ij, far_nbr_list->far_nbr_list.dvec[pj] );
                     rvec_ScaledAdd( workspace->f[j],
                             (CEvd + CEclmb) / r_ij, far_nbr_list->far_nbr_list.dvec[pj] );
                 }
diff --git a/PG-PuReMD/src/valence_angles.c b/PG-PuReMD/src/valence_angles.c
index f227372a2136d619e07c159b9fbc69ea4cb83f1e..e4e8478ca098ae49b5a4fe1a07123ec993dd3e33 100644
--- a/PG-PuReMD/src/valence_angles.c
+++ b/PG-PuReMD/src/valence_angles.c
@@ -186,7 +186,7 @@ void Valence_Angles( reax_system * const system, control_params * const control,
         else
         {
             vlpadj = workspace->nlp[j];
-            dSBO2 = (prod_SBO - 1.0) * (1.0 - p_val8 * workspace->dDelta_lp[j]);
+            dSBO2 = (prod_SBO - 1.0) * (1.0 + p_val8 * workspace->dDelta_lp[j]);
         }
 
         SBO = SBOp + (1.0 - prod_SBO) * (-workspace->Delta_boc[j] - p_val8 * vlpadj);
@@ -300,259 +300,261 @@ void Valence_Angles( reax_system * const system, control_params * const control,
 
                     /* Fortran ReaxFF code hard-codes the constant below
                      * as of 2019-02-27, so use that for now */
-                    if ( j < system->n && BOA_jk >= 0.0 && (bo_ij->BO * bo_jk->BO) >= 0.00001 )
-//                    if ( j < system->n && BOA_jk >= 0.0 && (bo_ij->BO * bo_jk->BO) > SQR(control->thb_cut) )
+                    if ( j >= system->n || BOA_jk < 0.0 || (bo_ij->BO * bo_jk->BO) < 0.00001 )
+//                    if ( j < system->n || BOA_jk < 0.0 || (bo_ij->BO * bo_jk->BO) < SQR(control->thb_cut) )
                     {
-                        thbh = &system->reax_param.thbp[
-                            index_thbp( type_i, type_j, type_k, system->reax_param.num_atom_types ) ];
+                        continue;
+                    }
+
+                    thbh = &system->reax_param.thbp[
+                        index_thbp( type_i, type_j, type_k, system->reax_param.num_atom_types ) ];
+
+                    for ( cnt = 0; cnt < thbh->cnt; ++cnt )
+                    {
+                        /* valence angle does not exist in the force field */
+                        if ( FABS(thbh->prm[cnt].p_val1) < 0.001 )
+                        {
+                            continue;
+                        }
+
+                        thbp = &thbh->prm[cnt];
+
+                        /* calculate valence angle energy */
+                        p_val1 = thbp->p_val1;
+                        p_val2 = thbp->p_val2;
+                        p_val4 = thbp->p_val4;
+                        p_val7 = thbp->p_val7;
+                        theta_00 = thbp->theta_00;
+
+                        exp3ij = EXP( -p_val3 * POW( BOA_ij, p_val4 ) );
+                        f7_ij = 1.0 - exp3ij;
+                        Cf7ij = p_val3 * p_val4
+                            * POW( BOA_ij, p_val4 - 1.0 ) * exp3ij;
+
+                        exp3jk = EXP( -p_val3 * POW( BOA_jk, p_val4 ) );
+                        f7_jk = 1.0 - exp3jk;
+                        Cf7jk = p_val3 * p_val4
+                            * POW( BOA_jk, p_val4 - 1.0 ) * exp3jk;
+
+                        expval7 = EXP( -p_val7 * workspace->Delta_boc[j] );
+                        trm8 = 1.0 + expval6 + expval7;
+                        f8_Dj = p_val5 - (p_val5 - 1.0) * (2.0 + expval6) / trm8;
+                        Cf8j = ( (1.0 - p_val5) / SQR(trm8) )
+                            * (p_val6 * expval6 * trm8
+                                    - (2.0 + expval6) * ( p_val6 * expval6 - p_val7 * expval7 ));
+
+                        theta_0 = 180.0 - theta_00 * (1.0 - EXP(-p_val10 * (2.0 - SBO2)));
+                        theta_0 = DEG2RAD( theta_0 );
+
+                        expval2theta = p_val1 * EXP(-p_val2 * SQR(theta_0 - theta));
+                        if ( p_val1 >= 0.0 )
+                        {
+                            expval12theta = p_val1 - expval2theta;
+                        }
+                        /* To avoid linear Me-H-Me angles (6/6/06) */
+                        else
+                        {
+                            expval12theta = -expval2theta;
+                        }
 
-                        for ( cnt = 0; cnt < thbh->cnt; ++cnt )
+                        CEval1 = Cf7ij * f7_jk * f8_Dj * expval12theta;
+                        CEval2 = Cf7jk * f7_ij * f8_Dj * expval12theta;
+                        CEval3 = Cf8j * f7_ij * f7_jk * expval12theta;
+                        CEval4 = 2.0 * p_val2 * f7_ij * f7_jk * f8_Dj
+                            * expval2theta * (theta_0 - theta);
+
+                        Ctheta_0 = p_val10 * DEG2RAD(theta_00)
+                            * EXP( -p_val10 * (2.0 - SBO2) );
+
+                        CEval5 = CEval4 * Ctheta_0 * CSBO2;
+                        CEval6 = CEval5 * dSBO1;
+                        CEval7 = CEval5 * dSBO2;
+                        CEval8 = CEval4 / sin_theta;
+
+                        e_ang = f7_ij * f7_jk * f8_Dj * expval12theta;
+                        data->my_en.e_ang += e_ang;
+
+                        /* calculate penalty for double bonds in valency angles */
+                        p_pen1 = thbp->p_pen1;
+
+                        exp_pen2ij = EXP( -p_pen2 * SQR( BOA_ij - 2.0 ) );
+                        exp_pen2jk = EXP( -p_pen2 * SQR( BOA_jk - 2.0 ) );
+                        exp_pen3 = EXP( -p_pen3 * workspace->Delta[j] );
+                        exp_pen4 = EXP(  p_pen4 * workspace->Delta[j] );
+                        trm_pen34 = 1.0 + exp_pen3 + exp_pen4;
+                        f9_Dj = ( 2.0 + exp_pen3 ) / trm_pen34;
+                        Cf9j = (-p_pen3 * exp_pen3 * trm_pen34
+                                - (2.0 + exp_pen3) * ( -p_pen3 * exp_pen3
+                                    + p_pen4 * exp_pen4 )) / SQR( trm_pen34 );
+
+                        e_pen = p_pen1 * f9_Dj * exp_pen2ij * exp_pen2jk;
+                        data->my_en.e_pen += e_pen;
+
+                        CEpen1 = e_pen * Cf9j / f9_Dj;
+                        temp = -2.0 * p_pen2 * e_pen;
+                        CEpen2 = temp * (BOA_ij - 2.0);
+                        CEpen3 = temp * (BOA_jk - 2.0);
+
+                        /* calculate valency angle conjugation energy */
+                        p_coa1 = thbp->p_coa1;
+
+                        exp_coa2 = EXP( p_coa2 * workspace->Delta_boc[j] );
+                        e_coa = p_coa1
+                            * EXP( -p_coa4 * SQR(BOA_ij - 1.5) )
+                            * EXP( -p_coa4 * SQR(BOA_jk - 1.5) )
+                            * EXP( -p_coa3 * SQR(workspace->total_bond_order[i] - BOA_ij) )
+                            * EXP( -p_coa3 * SQR(workspace->total_bond_order[k] - BOA_jk) )
+                            / (1.0 + exp_coa2);
+                        data->my_en.e_coa += e_coa;
+
+                        CEcoa1 = -2.0 * p_coa4 * (BOA_ij - 1.5) * e_coa;
+                        CEcoa2 = -2.0 * p_coa4 * (BOA_jk - 1.5) * e_coa;
+                        CEcoa3 = -p_coa2 * exp_coa2 * e_coa / (1.0 + exp_coa2);
+                        CEcoa4 = -2.0 * p_coa3 * (workspace->total_bond_order[i] - BOA_ij) * e_coa;
+                        CEcoa5 = -2.0 * p_coa3 * (workspace->total_bond_order[k] - BOA_jk) * e_coa;
+
+                        /* calculate force contributions */
+                        bo_ij->Cdbo += CEval1 + CEpen2 + (CEcoa1 - CEcoa4);
+                        bo_jk->Cdbo += CEval2 + CEpen3 + (CEcoa2 - CEcoa5);
+                        workspace->CdDelta[j] += (CEval3 + CEval7) + CEpen1 + CEcoa3;
+                        workspace->CdDelta[i] += CEcoa4;
+                        workspace->CdDelta[k] += CEcoa5;
+
+                        for ( t = start_j; t < end_j; ++t )
                         {
-                            /* valence angle does not exist in the force field */
-                            if ( FABS(thbh->prm[cnt].p_val1) < 0.001 )
-                            {
-                                continue;
-                            }
-
-                            thbp = &thbh->prm[cnt];
-
-                            /* calculate valence angle energy */
-                            p_val1 = thbp->p_val1;
-                            p_val2 = thbp->p_val2;
-                            p_val4 = thbp->p_val4;
-                            p_val7 = thbp->p_val7;
-                            theta_00 = thbp->theta_00;
-
-                            exp3ij = EXP( -p_val3 * POW( BOA_ij, p_val4 ) );
-                            f7_ij = 1.0 - exp3ij;
-                            Cf7ij = p_val3 * p_val4
-                                * POW( BOA_ij, p_val4 - 1.0 ) * exp3ij;
-
-                            exp3jk = EXP( -p_val3 * POW( BOA_jk, p_val4 ) );
-                            f7_jk = 1.0 - exp3jk;
-                            Cf7jk = p_val3 * p_val4
-                                * POW( BOA_jk, p_val4 - 1.0 ) * exp3jk;
-
-                            expval7 = EXP( -p_val7 * workspace->Delta_boc[j] );
-                            trm8 = 1.0 + expval6 + expval7;
-                            f8_Dj = p_val5 - (p_val5 - 1.0) * (2.0 + expval6) / trm8;
-                            Cf8j = ( (1.0 - p_val5) / SQR(trm8) )
-                                * (p_val6 * expval6 * trm8
-                                        - (2.0 + expval6) * ( p_val6 * expval6 - p_val7 * expval7 ));
-
-                            theta_0 = 180.0 - theta_00 * (1.0 - EXP(-p_val10 * (2.0 - SBO2)));
-                            theta_0 = DEG2RAD( theta_0 );
-
-                            expval2theta = p_val1 * EXP(-p_val2 * SQR(theta_0 - theta));
-                            if ( p_val1 >= 0.0 )
-                            {
-                                expval12theta = p_val1 - expval2theta;
-                            }
-                            /* To avoid linear Me-H-Me angles (6/6/06) */
-                            else
-                            {
-                                expval12theta = -expval2theta;
-                            }
-
-                            CEval1 = Cf7ij * f7_jk * f8_Dj * expval12theta;
-                            CEval2 = Cf7jk * f7_ij * f8_Dj * expval12theta;
-                            CEval3 = Cf8j * f7_ij * f7_jk * expval12theta;
-                            CEval4 = 2.0 * p_val2 * f7_ij * f7_jk * f8_Dj
-                                * expval2theta * (theta_0 - theta);
-
-                            Ctheta_0 = p_val10 * DEG2RAD(theta_00)
-                                * EXP( -p_val10 * (2.0 - SBO2) );
-
-                            CEval5 = CEval4 * Ctheta_0 * CSBO2;
-                            CEval6 = CEval5 * dSBO1;
-                            CEval7 = CEval5 * dSBO2;
-                            CEval8 = CEval4 / sin_theta;
-
-                            e_ang = f7_ij * f7_jk * f8_Dj * expval12theta;
-                            data->my_en.e_ang += e_ang;
-
-                            /* calculate penalty for double bonds in valency angles */
-                            p_pen1 = thbp->p_pen1;
-
-                            exp_pen2ij = EXP( -p_pen2 * SQR( BOA_ij - 2.0 ) );
-                            exp_pen2jk = EXP( -p_pen2 * SQR( BOA_jk - 2.0 ) );
-                            exp_pen3 = EXP( -p_pen3 * workspace->Delta[j] );
-                            exp_pen4 = EXP(  p_pen4 * workspace->Delta[j] );
-                            trm_pen34 = 1.0 + exp_pen3 + exp_pen4;
-                            f9_Dj = ( 2.0 + exp_pen3 ) / trm_pen34;
-                            Cf9j = (-p_pen3 * exp_pen3 * trm_pen34
-                                    - (2.0 + exp_pen3) * ( -p_pen3 * exp_pen3
-                                        + p_pen4 * exp_pen4 )) / SQR( trm_pen34 );
-
-                            e_pen = p_pen1 * f9_Dj * exp_pen2ij * exp_pen2jk;
-                            data->my_en.e_pen += e_pen;
-
-                            CEpen1 = e_pen * Cf9j / f9_Dj;
-                            temp = -2.0 * p_pen2 * e_pen;
-                            CEpen2 = temp * (BOA_ij - 2.0);
-                            CEpen3 = temp * (BOA_jk - 2.0);
-
-                            /* calculate valency angle conjugation energy */
-                            p_coa1 = thbp->p_coa1;
-
-                            exp_coa2 = EXP( p_coa2 * workspace->Delta_boc[j] );
-                            e_coa = p_coa1
-                                * EXP( -p_coa4 * SQR(BOA_ij - 1.5) )
-                                * EXP( -p_coa4 * SQR(BOA_jk - 1.5) )
-                                * EXP( -p_coa3 * SQR(workspace->total_bond_order[i] - BOA_ij) )
-                                * EXP( -p_coa3 * SQR(workspace->total_bond_order[k] - BOA_jk) )
-                                / (1.0 + exp_coa2);
-                            data->my_en.e_coa += e_coa;
-
-                            CEcoa1 = -2.0 * p_coa4 * (BOA_ij - 1.5) * e_coa;
-                            CEcoa2 = -2.0 * p_coa4 * (BOA_jk - 1.5) * e_coa;
-                            CEcoa3 = -p_coa2 * exp_coa2 * e_coa / (1.0 + exp_coa2);
-                            CEcoa4 = -2.0 * p_coa3 * (workspace->total_bond_order[i] - BOA_ij) * e_coa;
-                            CEcoa5 = -2.0 * p_coa3 * (workspace->total_bond_order[k] - BOA_jk) * e_coa;
-
-                            /* calculate force contributions */
-                            bo_ij->Cdbo += CEval1 + CEpen2 + (CEcoa1 - CEcoa4);
-                            bo_jk->Cdbo += CEval2 + CEpen3 + (CEcoa2 - CEcoa5);
-                            workspace->CdDelta[j] += ((CEval3 + CEval7) + CEpen1 + CEcoa3);
-                            workspace->CdDelta[i] += CEcoa4;
-                            workspace->CdDelta[k] += CEcoa5;
-
-                            for ( t = start_j; t < end_j; ++t )
-                            {
-                                pbond_jt = &bond_list->bond_list[t];
-                                bo_jt = &pbond_jt->bo_data;
-                                temp_bo_jt = bo_jt->BO;
-                                temp = CUBE( temp_bo_jt );
-                                pBOjt7 = temp * temp * temp_bo_jt;
-
-                                bo_jt->Cdbo += CEval6 * pBOjt7;
-                                bo_jt->Cdbopi += CEval5;
-                                bo_jt->Cdbopi2 += CEval5;
-                            }
-
-                            if ( control->virial == 0 )
-                            {
-                                rvec_ScaledAdd( workspace->f[i], CEval8, p_ijk->dcos_di );
-                                rvec_ScaledAdd( workspace->f[j], CEval8, p_ijk->dcos_dj );
-                                rvec_ScaledAdd( workspace->f[k], CEval8, p_ijk->dcos_dk );
-                            }
-                            else
-                            {
-                                /* terms not related to bond order derivatives are
-                                 * added directly into forces and pressure vector/tensor */
-                                rvec_Scale( force, CEval8, p_ijk->dcos_di );
-                                rvec_Add( workspace->f[i], force );
-                                rvec_iMultiply( ext_press, pbond_ij->rel_box, force );
-                                rvec_Add( data->my_ext_press, ext_press );
-
-                                rvec_ScaledAdd( workspace->f[j], CEval8, p_ijk->dcos_dj );
-
-                                rvec_Scale( force, CEval8, p_ijk->dcos_dk );
-                                rvec_Add( workspace->f[k], force );
-                                rvec_iMultiply( ext_press, pbond_jk->rel_box, force );
-                                rvec_Add( data->my_ext_press, ext_press );
-                            }
+                            pbond_jt = &bond_list->bond_list[t];
+                            bo_jt = &pbond_jt->bo_data;
+                            temp_bo_jt = bo_jt->BO;
+                            temp = CUBE( temp_bo_jt );
+                            pBOjt7 = temp * temp * temp_bo_jt;
+
+                            bo_jt->Cdbo += CEval6 * pBOjt7;
+                            bo_jt->Cdbopi += CEval5;
+                            bo_jt->Cdbopi2 += CEval5;
+                        }
+
+                        if ( control->virial == 0 )
+                        {
+                            rvec_ScaledAdd( workspace->f[i], CEval8, p_ijk->dcos_di );
+                            rvec_ScaledAdd( workspace->f[j], CEval8, p_ijk->dcos_dj );
+                            rvec_ScaledAdd( workspace->f[k], CEval8, p_ijk->dcos_dk );
+                        }
+                        else
+                        {
+                            /* terms not related to bond order derivatives are
+                             * added directly into forces and pressure vector/tensor */
+                            rvec_Scale( force, CEval8, p_ijk->dcos_di );
+                            rvec_Add( workspace->f[i], force );
+                            rvec_iMultiply( ext_press, pbond_ij->rel_box, force );
+                            rvec_Add( data->my_ext_press, ext_press );
+
+                            rvec_ScaledAdd( workspace->f[j], CEval8, p_ijk->dcos_dj );
+
+                            rvec_Scale( force, CEval8, p_ijk->dcos_dk );
+                            rvec_Add( workspace->f[k], force );
+                            rvec_iMultiply( ext_press, pbond_jk->rel_box, force );
+                            rvec_Add( data->my_ext_press, ext_press );
+                        }
 
 #if defined(TEST_ENERGY)
-                            /*fprintf( out_control->eval, "%12.8f%12.8f%12.8f%12.8f\n",
-                              p_val3, p_val4, BOA_ij, BOA_jk );
-                            fprintf(out_control->eval, "%13.8f%13.8f%13.8f%13.8f%13.8f\n",
-                                workspace->Delta_e[j], workspace->vlpex[j],
-                                dSBO1, dSBO2, vlpadj );
-                            fprintf( out_control->eval, "%12.8f%12.8f%12.8f%12.8f\n",
-                                 f7_ij, f7_jk, f8_Dj, expval12theta );
-                            fprintf( out_control->eval,
-                                 "%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f\n",
-                                 CEval1, CEval2, CEval3, CEval4,
-                                 CEval5, CEval6, CEval7, CEval8 );
-
-                            fprintf( out_control->eval,
-                            "%12.8f%12.8f%12.8f\n%12.8f%12.8f%12.8f\n%12.8f%12.8f%12.8f\n",
-                               p_ijk->dcos_di[0]/sin_theta, p_ijk->dcos_di[1]/sin_theta,
-                               p_ijk->dcos_di[2]/sin_theta,
-                               p_ijk->dcos_dj[0]/sin_theta, p_ijk->dcos_dj[1]/sin_theta,
-                               p_ijk->dcos_dj[2]/sin_theta,
-                               p_ijk->dcos_dk[0]/sin_theta, p_ijk->dcos_dk[1]/sin_theta,
-                               p_ijk->dcos_dk[2]/sin_theta);
-
-                            fprintf( out_control->eval,
-                                 "%6d%6d%6d%15.8f%15.8f\n",
+                        /*fprintf( out_control->eval, "%12.8f%12.8f%12.8f%12.8f\n",
+                          p_val3, p_val4, BOA_ij, BOA_jk );
+                        fprintf(out_control->eval, "%13.8f%13.8f%13.8f%13.8f%13.8f\n",
+                            workspace->Delta_e[j], workspace->vlpex[j],
+                            dSBO1, dSBO2, vlpadj );
+                        fprintf( out_control->eval, "%12.8f%12.8f%12.8f%12.8f\n",
+                             f7_ij, f7_jk, f8_Dj, expval12theta );
+                        fprintf( out_control->eval,
+                             "%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f%12.8f\n",
+                             CEval1, CEval2, CEval3, CEval4,
+                             CEval5, CEval6, CEval7, CEval8 );
+
+                        fprintf( out_control->eval,
+                        "%12.8f%12.8f%12.8f\n%12.8f%12.8f%12.8f\n%12.8f%12.8f%12.8f\n",
+                           p_ijk->dcos_di[0]/sin_theta, p_ijk->dcos_di[1]/sin_theta,
+                           p_ijk->dcos_di[2]/sin_theta,
+                           p_ijk->dcos_dj[0]/sin_theta, p_ijk->dcos_dj[1]/sin_theta,
+                           p_ijk->dcos_dj[2]/sin_theta,
+                           p_ijk->dcos_dk[0]/sin_theta, p_ijk->dcos_dk[1]/sin_theta,
+                           p_ijk->dcos_dk[2]/sin_theta);
+
+                        fprintf( out_control->eval,
+                             "%6d%6d%6d%15.8f%15.8f\n",
+                             system->my_atoms[i].orig_id,
+                             system->my_atoms[j].orig_id,
+                             system->my_atoms[k].orig_id,
+                             RAD2DEG(theta), e_ang );*/
+
+                        fprintf( out_control->eval,
+                                 //"%6d%6d%6d%24.15e%24.15e%24.15e%24.15e%24.15e%24.15e\n",
+                                 "%6d%6d%6d%12.4f%12.4f%12.4f%12.4f%12.4f%12.4f\n",
+                                 system->my_atoms[i].orig_id,
+                                 system->my_atoms[j].orig_id,
+                                 system->my_atoms[k].orig_id,
+                                 RAD2DEG(theta), theta_0, BOA_ij, BOA_jk,
+                                 e_ang, data->my_en.e_ang );
+
+                        fprintf( out_control->epen,
+                                 //"%6d%6d%6d%24.15e%24.15e%24.15e%24.15e%24.15e\n",
+                                 "%6d%6d%6d%12.4f%12.4f%12.4f%12.4f%12.4f\n",
                                  system->my_atoms[i].orig_id,
                                  system->my_atoms[j].orig_id,
                                  system->my_atoms[k].orig_id,
-                                 RAD2DEG(theta), e_ang );*/
-
-                            fprintf( out_control->eval,
-                                     //"%6d%6d%6d%24.15e%24.15e%24.15e%24.15e%24.15e%24.15e\n",
-                                     "%6d%6d%6d%12.4f%12.4f%12.4f%12.4f%12.4f%12.4f\n",
-                                     system->my_atoms[i].orig_id,
-                                     system->my_atoms[j].orig_id,
-                                     system->my_atoms[k].orig_id,
-                                     RAD2DEG(theta), theta_0, BOA_ij, BOA_jk,
-                                     e_ang, data->my_en.e_ang );
-
-                            fprintf( out_control->epen,
-                                     //"%6d%6d%6d%24.15e%24.15e%24.15e%24.15e%24.15e\n",
-                                     "%6d%6d%6d%12.4f%12.4f%12.4f%12.4f%12.4f\n",
-                                     system->my_atoms[i].orig_id,
-                                     system->my_atoms[j].orig_id,
-                                     system->my_atoms[k].orig_id,
-                                     RAD2DEG(theta), BOA_ij, BOA_jk, e_pen,
-                                     data->my_en.e_pen );
-
-                            fprintf( out_control->ecoa,
-                                     //"%6d%6d%6d%24.15e%24.15e%24.15e%24.15e%24.15e\n",
-                                     "%6d%6d%6d%12.4f%12.4f%12.4f%12.4f%12.4f\n",
-                                     system->my_atoms[i].orig_id,
-                                     system->my_atoms[j].orig_id,
-                                     system->my_atoms[k].orig_id,
-                                     RAD2DEG(theta), BOA_ij, BOA_jk,
-                                     e_coa, data->my_en.e_coa );
+                                 RAD2DEG(theta), BOA_ij, BOA_jk, e_pen,
+                                 data->my_en.e_pen );
+
+                        fprintf( out_control->ecoa,
+                                 //"%6d%6d%6d%24.15e%24.15e%24.15e%24.15e%24.15e\n",
+                                 "%6d%6d%6d%12.4f%12.4f%12.4f%12.4f%12.4f\n",
+                                 system->my_atoms[i].orig_id,
+                                 system->my_atoms[j].orig_id,
+                                 system->my_atoms[k].orig_id,
+                                 RAD2DEG(theta), BOA_ij, BOA_jk,
+                                 e_coa, data->my_en.e_coa );
 #endif
 
 #if defined(TEST_FORCES)
-                            /* angle forces */
-                            Add_dBO( system, lists, j, pi, CEval1, workspace->f_ang );
-                            Add_dBO( system, lists, j, pk, CEval2, workspace->f_ang );
-                            Add_dDelta( system, lists, j,
-                                        CEval3 + CEval7, workspace->f_ang );
-
-                            for ( t = start_j; t < end_j; ++t )
-                            {
-                                pbond_jt = &bond_list->bond_list[t];
-                                bo_jt = &pbond_jt->bo_data;
-                                temp_bo_jt = bo_jt->BO;
-                                temp = CUBE( temp_bo_jt );
-                                pBOjt7 = temp * temp * temp_bo_jt;
-
-                                Add_dBO( system, lists, j, t, pBOjt7 * CEval6,
-                                         workspace->f_ang );
-                                Add_dBOpinpi2( system, lists, j, t, CEval5, CEval5,
-                                               workspace->f_ang, workspace->f_ang );
-                            }
-
-                            rvec_ScaledAdd( workspace->f_ang[i], CEval8, p_ijk->dcos_di );
-                            rvec_ScaledAdd( workspace->f_ang[j], CEval8, p_ijk->dcos_dj );
-                            rvec_ScaledAdd( workspace->f_ang[k], CEval8, p_ijk->dcos_dk );
-                            /* end angle forces */
-
-                            /* penalty forces */
-                            Add_dDelta( system, lists, j, CEpen1, workspace->f_pen );
-                            Add_dBO( system, lists, j, pi, CEpen2, workspace->f_pen );
-                            Add_dBO( system, lists, j, pk, CEpen3, workspace->f_pen );
-                            /* end penalty forces */
-
-                            /* coalition forces */
-                            Add_dBO( system, lists, j, pi, CEcoa1 - CEcoa4,
-                                     workspace->f_coa );
-                            Add_dBO( system, lists, j, pk, CEcoa2 - CEcoa5,
-                                     workspace->f_coa );
-                            Add_dDelta( system, lists, j, CEcoa3, workspace->f_coa );
-                            Add_dDelta( system, lists, i, CEcoa4, workspace->f_coa );
-                            Add_dDelta( system, lists, k, CEcoa5, workspace->f_coa );
-                            /* end coalition forces */
-#endif
+                        /* angle forces */
+                        Add_dBO( system, lists, j, pi, CEval1, workspace->f_ang );
+                        Add_dBO( system, lists, j, pk, CEval2, workspace->f_ang );
+                        Add_dDelta( system, lists, j,
+                                    CEval3 + CEval7, workspace->f_ang );
+
+                        for ( t = start_j; t < end_j; ++t )
+                        {
+                            pbond_jt = &bond_list->bond_list[t];
+                            bo_jt = &pbond_jt->bo_data;
+                            temp_bo_jt = bo_jt->BO;
+                            temp = CUBE( temp_bo_jt );
+                            pBOjt7 = temp * temp * temp_bo_jt;
+
+                            Add_dBO( system, lists, j, t, pBOjt7 * CEval6,
+                                     workspace->f_ang );
+                            Add_dBOpinpi2( system, lists, j, t, CEval5, CEval5,
+                                           workspace->f_ang, workspace->f_ang );
                         }
+
+                        rvec_ScaledAdd( workspace->f_ang[i], CEval8, p_ijk->dcos_di );
+                        rvec_ScaledAdd( workspace->f_ang[j], CEval8, p_ijk->dcos_dj );
+                        rvec_ScaledAdd( workspace->f_ang[k], CEval8, p_ijk->dcos_dk );
+                        /* end angle forces */
+
+                        /* penalty forces */
+                        Add_dDelta( system, lists, j, CEpen1, workspace->f_pen );
+                        Add_dBO( system, lists, j, pi, CEpen2, workspace->f_pen );
+                        Add_dBO( system, lists, j, pk, CEpen3, workspace->f_pen );
+                        /* end penalty forces */
+
+                        /* coalition forces */
+                        Add_dBO( system, lists, j, pi, CEcoa1 - CEcoa4,
+                                 workspace->f_coa );
+                        Add_dBO( system, lists, j, pk, CEcoa2 - CEcoa5,
+                                 workspace->f_coa );
+                        Add_dDelta( system, lists, j, CEcoa3, workspace->f_coa );
+                        Add_dDelta( system, lists, i, CEcoa4, workspace->f_coa );
+                        Add_dDelta( system, lists, k, CEcoa5, workspace->f_coa );
+                        /* end coalition forces */
+#endif
                     }
                 }
             }
diff --git a/sPuReMD/src/nonbonded.c b/sPuReMD/src/nonbonded.c
index b26e600a9bbdc71ff215d922c1f5dc9f127fdb1f..2c3ae783932df0dd8a21ec6b53cab08343adb49c 100644
--- a/sPuReMD/src/nonbonded.c
+++ b/sPuReMD/src/nonbonded.c
@@ -164,7 +164,8 @@ void vdW_Coulomb_Energy( reax_system *system, control_params *control,
                     dTap = dTap * r_ij + workspace->Tap[1];
 
                     /* vdWaals Calculations */
-                    if ( system->reax_param.gp.vdw_type == 1 || system->reax_param.gp.vdw_type == 3 )
+                    if ( system->reax_param.gp.vdw_type == 1
+                            || system->reax_param.gp.vdw_type == 3 )
                     {
                         /* shielding */
                         powr_vdW1 = POW( r_ij, p_vdW1 );
@@ -221,8 +222,7 @@ void vdW_Coulomb_Energy( reax_system *system, control_params *control,
 #endif
 
                     /* Coulomb Calculations */
-                    dr3gamij_1 = r_ij * r_ij * r_ij
-                        + POW( twbp->gamma, -3.0 );
+                    dr3gamij_1 = r_ij * r_ij * r_ij + POW( twbp->gamma, -3.0 );
                     dr3gamij_3 = POW( dr3gamij_1 , 1.0 / 3.0 );
                     e_clb = C_ELE * (system->atoms[i].q * system->atoms[j].q) / dr3gamij_3;
                     e_ele = self_coef * (e_clb * Tap);
diff --git a/sPuReMD/src/valence_angles.c b/sPuReMD/src/valence_angles.c
index 7d7520bf589994639c5a3ca278931531b876c60f..d8d7e5b13ab536afe29b2ffc1c1add78a69488fc 100644
--- a/sPuReMD/src/valence_angles.c
+++ b/sPuReMD/src/valence_angles.c
@@ -64,7 +64,7 @@ void Calculate_dCos_Theta( rvec dvec_ji, real d_ji, rvec dvec_jk, real d_jk,
     sqr_d_ji = SQR( d_ji );
     sqr_d_jk = SQR( d_jk );
     inv_dists = 1.0 / (d_ji * d_jk);
-    inv_dists3 = POW( inv_dists, 3 );
+    inv_dists3 = POW( inv_dists, 3.0 );
     dot_dvecs = rvec_Dot( dvec_ji, dvec_jk );
     Cdot_inv3 = dot_dvecs * inv_dists3;
 
@@ -73,7 +73,7 @@ void Calculate_dCos_Theta( rvec dvec_ji, real d_ji, rvec dvec_jk, real d_jk,
         (*dcos_theta_di)[t] = dvec_jk[t] * inv_dists
             - Cdot_inv3 * sqr_d_jk * dvec_ji[t];
 
-        (*dcos_theta_dj)[t] = -(dvec_jk[t] + dvec_ji[t]) * inv_dists
+        (*dcos_theta_dj)[t] = -1.0 * (dvec_jk[t] + dvec_ji[t]) * inv_dists
             + Cdot_inv3 * ( sqr_d_jk * dvec_ji[t] + sqr_d_ji * dvec_jk[t] );
 
         (*dcos_theta_dk)[t] = dvec_ji[t] * inv_dists
@@ -377,13 +377,13 @@ void Valence_Angles( reax_system *system, control_params *control,
                             f8_Dj = p_val5 - (p_val5 - 1.0) * (2.0 + expval6) / trm8;
                             Cf8j = ( (1.0 - p_val5) / SQR(trm8) )
                                 * (p_val6 * expval6 * trm8
-                                - (2.0 + expval6) * ( p_val6 * expval6 - p_val7 * expval7 ));
+                                        - (2.0 + expval6) * ( p_val6 * expval6 - p_val7 * expval7 ));
 
                             theta_0 = 180.0 - theta_00 * (1.0 - EXP(-p_val10 * (2.0 - SBO2)));
                             theta_0 = DEG2RAD( theta_0 );
 
                             expval2theta = p_val1 * EXP(-p_val2 * SQR(theta_0 - theta));
-                            if ( p_val1 >= 0 )
+                            if ( p_val1 >= 0.0 )
                             {
                                 expval12theta = p_val1 - expval2theta;
                             }
@@ -477,15 +477,15 @@ void Valence_Angles( reax_system *system, control_params *control,
 #if defined(_OPENMP)
 //                            #pragma omp atomic
 #endif
-                            bo_ij->Cdbo += (CEval1 + CEpen2 + (CEcoa1 - CEcoa4));
+                            bo_ij->Cdbo += CEval1 + CEpen2 + (CEcoa1 - CEcoa4);
 #if defined(_OPENMP)
 //                            #pragma omp atomic
 #endif
-                            bo_jk->Cdbo += (CEval2 + CEpen3 + (CEcoa2 - CEcoa5));
+                            bo_jk->Cdbo += CEval2 + CEpen3 + (CEcoa2 - CEcoa5);
 #if defined(_OPENMP)
 //                            #pragma omp atomic
 #endif
-                            workspace->CdDelta[j] += ((CEval3 + CEval7) + CEpen1 + CEcoa3);
+                            workspace->CdDelta[j] += (CEval3 + CEval7) + CEpen1 + CEcoa3;
 #if defined(_OPENMP)
 //                            #pragma omp atomic
 #endif