diff --git a/core/_tests_simulate.jl b/core/_tests_simulate.jl
index 0f55f06e852ea5bd27bd5f5a86668cd9b0a06e71..06e01d179268aead933b13e5fc3db11d1fb52a97 100644
--- a/core/_tests_simulate.jl
+++ b/core/_tests_simulate.jl
@@ -1,11 +1,24 @@
 
 # File for benchmarking simulation and memory access of the package.
 
+# Trajectories
+
 _get_values_col(σ::AbstractTrajectory, var::String) = 
 σ.values[(σ.m)._map_obs_var_idx[var],:] 
 _get_values_row(σ::AbstractTrajectory, var::String) = 
 σ.values[:,(σ.m)._map_obs_var_idx[var]] 
 
+_get_state_col(σ::AbstractTrajectory, idx::Int) = 
+σ.values[:,idx]
+_get_state_row(σ::AbstractTrajectory, idx::Int) = 
+σ.values[idx,:]
+
+_get_value_col(σ::AbstractTrajectory, var::String, idx::Int) = 
+σ.values[(σ.m)._map_obs_var_idx[var],idx] 
+_get_value_row(σ::AbstractTrajectory, var::String, idx::Int) = 
+σ.values[idx,(σ.m)._map_obs_var_idx[var]] 
+
+# Model
 
 function _simulate_col(m::ContinuousTimeModel)
     # trajectory fields
@@ -135,7 +148,7 @@ function _simulate_row_buffer(m::ContinuousTimeModel; buffer_size::Int = 5)
         while i < buffer_size && !is_absorbing && (tn <= m.time_bound)
             i += 1
             m.f!(mat_x, l_t, l_tr, i, xn, tn, m.p)
-            xn = @view mat_x[:,i]
+            xn = @view mat_x[i,:]
             tn = l_t[i]
             is_absorbing = m.is_absorbing(m.p,xn)::Bool
         end
diff --git a/tests/run_simulation.jl b/tests/run_simulation.jl
index 224820fe1b65b18a6d63c2dddd4fa5b7bc44fe03..0336e5019d9a3c92d3dfa8c7894b56e199d9583e 100644
--- a/tests/run_simulation.jl
+++ b/tests/run_simulation.jl
@@ -9,6 +9,7 @@ if !isdir(str_dir_pics) mkdir(str_dir_pics) end
     @test include("simulation/sim_sir.jl")
     @test include("simulation/sim_sir_bounded.jl")
     @test include("simulation/sim_sir_col_buffer_bounded.jl")
+    @test include("simulation/sim_sir_row_buffer_bounded.jl")
     @test include("simulation/sim_er.jl")
 end
 
diff --git a/tests/simulation/sim_sir_col_buffer_bounded.jl b/tests/simulation/sim_sir_col_buffer_bounded.jl
index 94335f9a0ab35e28bc81d90d2c602c9ad900b0fa..334349553d9cd9720522b7f003ad7114750195b8 100644
--- a/tests/simulation/sim_sir_col_buffer_bounded.jl
+++ b/tests/simulation/sim_sir_col_buffer_bounded.jl
@@ -8,7 +8,7 @@ SIR_col_buffer.time_bound = 100.0
 
 σ = _simulate_col_buffer(SIR_col_buffer)
 plt.figure()
-plt.step(σ["times"], σ["I"], "ro--", marker="x", where="post", linewidth=1.0)
+plt.step(σ["times"], _get_values_col(σ,"I"), "ro--", marker="x", where="post", linewidth=1.0)
 plt.savefig(get_module_path() * "/tests/simulation/res_pics/sim_sir_col_buffer_bounded.png")
 plt.close()
 
diff --git a/tests/simulation/sim_sir_row_buffer_bounded.jl b/tests/simulation/sim_sir_row_buffer_bounded.jl
new file mode 100644
index 0000000000000000000000000000000000000000..b6a38981e1d574ffa49a6bce8f28b986a5c86c0f
--- /dev/null
+++ b/tests/simulation/sim_sir_row_buffer_bounded.jl
@@ -0,0 +1,16 @@
+
+using MarkovProcesses 
+include(get_module_path() * "/core/_tests_simulate.jl")
+using PyPlot
+
+load_model("_bench_perf_test/SIR_row_buffer")
+SIR_row_buffer.time_bound = 100.0
+
+σ = _simulate_row_buffer(SIR_row_buffer)
+plt.figure()
+plt.step(σ["times"], _get_values_row(σ,"I"), "ro--", marker="x", where="post", linewidth=1.0)
+plt.savefig(get_module_path() * "/tests/simulation/res_pics/sim_sir_row_buffer_bounded.png")
+plt.close()
+
+return true
+