diff --git a/src/plugins/switch/elan/qsw.c b/src/plugins/switch/elan/qsw.c
index aff0c5fa4bb0aa3f986534b4192b401106447dfa..38953e2b8c7c4ae3dce88cefc2e53acede249f77 100644
--- a/src/plugins/switch/elan/qsw.c
+++ b/src/plugins/switch/elan/qsw.c
@@ -379,7 +379,8 @@ qsw_init(qsw_libstate_t oldstate)
 	if (oldstate)
 		_copy_libstate(new, oldstate);
 	else {
-		new->ls_prognum = QSW_PRG_START;
+		new->ls_prognum = QSW_PRG_START + 
+			(lrand48() % (QSW_PRG_END - QSW_PRG_START + 1));
 		new->step_ctx_list = list_create(_step_ctx_del);
 	}
 	qsw_internal_state = new;