diff --git a/src/riscv.ml b/src/riscv.ml
index ca9dd36e550739e238720ef82273f8d55361d74e..185fd7860561402db5db6c099667a1b634fee1a4 100644
--- a/src/riscv.ml
+++ b/src/riscv.ml
@@ -163,9 +163,11 @@ let riscv_load_args oc : unit res =
            List.map (fun i ->
                [LConst(reg_a0, i);
                 LCall("load_int_arg");
+                LBranch(Rceq, reg_a0, reg_zero, Printf.sprintf "riscv_load_arg_%d" i);
                 LCall("atoi");
                 LStore(reg_fp, - !Archi.wordsize*i,
-                       reg_a0, !Archi.wordsize)
+                       reg_a0, !Archi.wordsize);
+                LLabel(Printf.sprintf "riscv_load_arg_%d" i);
                ]) in
   (* for each arg in [1..8]
      ld a{arg-1}, -8*arg(fp)
@@ -181,6 +183,9 @@ let riscv_fun_load_arg oc () =
   ("load_int_arg",{
       ltlfunargs = 0;
       (*
+
+         *( fp + a0 * wordsize + 8)
+
          t0 <- Archi.wordsize (in this example 8)
          mul a0, a0, t0
          add t0, fp, a0