diff --git a/src/define_isostasy_bc.f90 b/src/define_isostasy_bc.f90
index 65b26e4f310069b010fb585dd3849ad5df9b4e95..3f8ba11fa2c2f0873f6d2eeb9667f1397b977aaf 100644
--- a/src/define_isostasy_bc.f90
+++ b/src/define_isostasy_bc.f90
@@ -105,22 +105,29 @@ else
 
     ! Modify velocities
     if (osolve%z(i).lt.eps) then
-!      if (osolve%x(i).le.x0) then
-!        if (spu.le.1.d0-eps) then                                                 ! No change in B/Cs
-          if (osolve%u(i).gt.eps) then
-            zdisp=osolve%u(i)*sin(atan(zsl))                                    ! Negative for negative slope
-            vinit=(osolve%u(i)**2.d0+osolve%w(i)**2.d0)**0.5d0                  ! Incoming velocity vector magnitude
-            osolve%w(i)=osolve%w(i)+zdisp                                       ! New z-velocity
+      if (osolve%x(i).le.x0) then
+        if (spu.le.1.d0-eps) then                                               ! No change in B/Cs
+          zdisp=osolve%u(i)*sin(atan(zsl))                                      ! Negative for negative slope
+          vinit=(osolve%u(i)**2.d0+osolve%w(i)**2.d0)**0.5d0                    ! Incoming velocity vector magnitude
+          osolve%w(i)=osolve%w(i)+zdisp                                         ! New z-velocity
+          if (osolve%u(i).ge.0.d0) then
             osolve%u(i)=sqrt(vinit**2-osolve%w(i)**2.d0)                        ! New x-velocity
+          else
+            osolve%u(i)=-sqrt(vinit**2-osolve%w(i)**2.d0)                       ! New x-velocity
           endif
-!        endif
-!      else
-!        if (spu.ge.eps) then
-!          zdisp=osolve%u(i)*sin(atan(zsl))                                        ! Negative for negative slope
-!          osolve%w(i)=zdisp-osolve%w(i)                                           ! New z-velocity
-!          osolve%u(i)=sqrt(vin**2-osolve%w(i)**2.d0)                              ! New x-velocity
-!        endif
-!      endif
+        endif
+      else
+        if (spu.ge.eps) then
+          zdisp=osolve%u(i)*sin(atan(zsl))                                      ! Negative for negative slope
+          vinit=(osolve%u(i)**2.d0+osolve%w(i)**2.d0)**0.5d0                    ! Incoming velocity vector magnitude
+          osolve%w(i)=osolve%w(i)+zdisp                                         ! New z-velocity
+          if (osolve%u(i).ge.0.d0) then
+            osolve%u(i)=sqrt(vinit**2-osolve%w(i)**2.d0)                        ! New x-velocity
+          else
+            osolve%u(i)=-sqrt(vinit**2-osolve%w(i)**2.d0)                       ! New x-velocity
+          endif
+        endif
+      endif
     endif
   enddo
   deallocate(zisoslx)