diff --git a/src/mission.c b/src/mission.c
index 5292572..300d386 100644
--- a/src/mission.c
+++ b/src/mission.c
@@ -88,6 +88,7 @@ MissionData* mission_get(int id) {
 
 /* Initialize a mission. */
 static int mission_init(Mission* mission, MissionData* misn, int load) {
+  int i;
   char* buf;
   uint32_t bufsize;
 
@@ -99,6 +100,12 @@ static int mission_init(Mission* mission, MissionData* misn, int load) {
   else
     mission->id = mission_genID();
 
+  /* Init the timers. */
+  for(i = 0; i < MISSION_TIMER_MAX; i++) {
+    mission->timer[i] = 0.;
+    mission->tfunc[i] = NULL;
+  }
+
   mission->data = misn;
 
   /* Init lua. */
@@ -309,7 +316,7 @@ void missions_update(const double dt) {
   for(i = 0; i < MISSION_MAX; i++) {
     /* Mission must be active. */
     if(player_missions[i].id != 0) {
-      for(j = 0; j < MISSION_TIMER_MAX; i++) {
+      for(j = 0; j < MISSION_TIMER_MAX; j++) {
         /* Timer must be active. */
         if(player_missions[i].timer[j] != 0.) {
           player_missions[i].timer[j] -= dt;