diff --git a/Pv_mod/Source.cpp b/Pv_mod/Source.cpp
index 7ca941777822d750669e90fec024484c904f0e34..36b5e1eb5b02a632482189cb50128509c6e064c3 100644
--- a/Pv_mod/Source.cpp
+++ b/Pv_mod/Source.cpp
@@ -577,7 +577,7 @@ public:
 	///////////////////////////////
 	// SSAT
 
-	double T_last_BS;
+	double T_last_BS;         // Tracking of time since last PCR-detectable blood-stage infection
 
 	///////////////////////////////////////////////////
 	// Individual-level effect of vector control
@@ -946,7 +946,8 @@ int main(int argc, char** argv)
 	population PNG_pop;
 	params Pv_mod_par;
 
-	int time_start, time_end, burnin_time, N_time;
+	double time_start, time_end, burnin_time;
+	int  N_time;
 
 
 	////////////////////////////////////////////
@@ -2857,7 +2858,7 @@ void intervention_dist(double t, params* theta, population* POP, intervention* I
 
 			for (int n = 0; n<POP->N_pop; n++)
 			{
-				if (gennor(POP->people[n].zz_int[4], theta->sig_round_MDA) < QQ)
+				if (gennor(POP->people[n].zz_int[3], theta->sig_round_MDA) < QQ)
 				{
 					/////////////////////////////////////////////////////
 					// Blood-stage treatment is always administered
@@ -2965,7 +2966,7 @@ void intervention_dist(double t, params* theta, population* POP, intervention* I
 						POP->people[n].Hyp = 0;
 
 						POP->people[n].PQ_proph = 1;
-						POP->people[n].PQ_proph_timer = theta->SSAT_PQ_PQproph;
+						POP->people[n].PQ_proph_timer = theta->MDA_PQ_PQproph;
 					}
 				}
 			}
@@ -3008,7 +3009,7 @@ void intervention_dist(double t, params* theta, population* POP, intervention* I
 
 			for (int n = 0; n < POP->N_pop; n++)
 			{
-				if (gennor(POP->people[n].zz_int[5], theta->sig_round_MDA) < QQ)
+				if (gennor(POP->people[n].zz_int[4], theta->sig_round_MDA) < QQ)
 				{
 					/////////////////////////////////////////////////////
 					// Blood-stage treatment is always administered
@@ -3154,7 +3155,7 @@ void intervention_dist(double t, params* theta, population* POP, intervention* I
 						POP->people[n].Hyp = 0;
 
 						POP->people[n].PQ_proph = 1;
-						POP->people[n].PQ_proph_timer = theta->SSAT_PQ_PQproph;
+						POP->people[n].PQ_proph_timer = theta->MSAT_PQ_PQproph;
 					}
 				}
 			}
@@ -3197,7 +3198,7 @@ void intervention_dist(double t, params* theta, population* POP, intervention* I
 
 			for (int n = 0; n < POP->N_pop; n++)
 			{
-				if (gennor(POP->people[n].zz_int[6], theta->sig_round_MDA) < QQ)
+				if (gennor(POP->people[n].zz_int[5], theta->sig_round_MDA) < QQ)
 				{
 					/////////////////////////////////////////////////////
 					// Blood-stage treatment is always administered
@@ -3217,9 +3218,15 @@ void intervention_dist(double t, params* theta, population* POP, intervention* I
 
 					/////////////////////////////////////////////////////////////////////
 					// SSAT screening for blood-stage infection in the last 9 months
+					//
+					// There are two options here. Option 1 define over-treatment on the 
+					// basis of blood-stage infection with the last 9 month. Option 2
+					// defines over-treatment on the basis of presence of hypnozoites.
 
 					SSAT_pos = 0;
 
+					// OPTION 1
+/*
 					if( (POP->people[n].T_last_BS <= 270.0) && (genunf(0.0, 1.0) < theta->SSAT_PQ_sens) )
 					{
 						SSAT_pos = 1;
@@ -3229,6 +3236,20 @@ void intervention_dist(double t, params* theta, population* POP, intervention* I
 					{
 						SSAT_pos = 1;
 					}
+*/
+
+					// OPTION 2
+
+					if ((POP->people[n].Hyp > 0) && (genunf(0.0, 1.0) < theta->SSAT_PQ_sens))
+					{
+						SSAT_pos = 1;
+					}
+
+					if ((POP->people[n].Hyp == 0) && (genunf(0.0, 1.0) > theta->SSAT_PQ_spec))
+					{
+						SSAT_pos = 1;
+					}
+
 
 					/////////////////////////////////////////////////////////////////////
 					// Is PQ administered?