diff --git a/lbmpy/boundaries/wall_treatment/wall_models.py b/lbmpy/boundaries/wall_treatment/wall_models.py
index 2b726a223c2931cea62514b607fb69a09f41fb75..795c14c50a368b0ac8fc5b08639e628e5b42d169 100644
--- a/lbmpy/boundaries/wall_treatment/wall_models.py
+++ b/lbmpy/boundaries/wall_treatment/wall_models.py
@@ -63,6 +63,8 @@ class WallFunctionBounce(LbBoundary):
 
     def __call__(self, f_out, f_in, dir_symbol, inv_dir, lb_method, index_field):
         # needed symbols for offsets and indices
+        neighbor_offset = NeighbourOffsetArrays.neighbour_offset(dir_symbol, lb_method.stencil)
+        tangential_offset = tuple(offset + normal for offset, normal in zip(neighbor_offset, self.normal_direction))
         mirrored_stencil_symbol = MirroredStencilDirections._mirrored_symbol(self.mirror_axis)
         mirrored_direction = inv_dir[sp.IndexedBase(mirrored_stencil_symbol, shape=(1,))[dir_symbol]]
 
@@ -130,6 +132,6 @@ class WallFunctionBounce(LbBoundary):
         neighbor_offset = NeighbourOffsetArrays.neighbour_offset(dir_symbol, lb_method.stencil)
         drag = neighbor_offset[0] * factor * tau_w_x + neighbor_offset[2] * factor * tau_w_z
 
-        result.append(Assignment(f_in(inv_dir[dir_symbol]), f_in[normal_direction](mirrored_direction) - drag))
+        result.append(Assignment(f_in.center(inv_dir[dir_symbol]), f_out[tangential_offset](mirrored_direction) - drag))
 
         return result