diff --git a/bp.cpp b/bp.cpp
index 0fe8111..87f5cb5 100644
--- a/bp.cpp
+++ b/bp.cpp
@@ -518,12 +518,9 @@ real_t FactorGraph::update(int i, real_t damping, bool learn)
 
 		for (int gi = ti; gi < qi; ++gi) {
 			real_t w = f.ht[ti] * f.hg[gi];
-			if (ti == 0)
-				w *= params.pseed;
-			else if (ti == qi - 1)
-				w *= params.psus;
-			else
-				w *= 1 - params.pseed - params.psus;
+
+			w *= params.pseed * (ti == 0) + (1 - params.pseed) * (ti != 0)
+			w *= params.psus * (ti == qi - 1) + (1 - params.psus) * (ti != qi - 1)
 
 			for (unsigned k = 0; k < obs.size(); ++k) {
 				times_t const t = get<0>(obs[k]);