diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index 51c84fd..a599b63 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -4,6 +4,8 @@ jobs:
 
   Build:
     runs-on: ${{ matrix.os }}
+    permissions:
+      contents: write
     strategy:
       fail-fast: false
       matrix:
@@ -16,12 +18,12 @@ jobs:
 
     steps:
     - name: Checkout code
-      uses: actions/checkout@v2
+      uses: actions/checkout@v3
       with:
         submodules: recursive
 
     - name: Install Python
-      uses: actions/setup-python@v1 # Use pip to install latest CMake, & FORD/Jin2For, etc.
+      uses: actions/setup-python@v4 # Use pip to install latest CMake, & FORD/Jin2For, etc.
       with:
         python-version: ${{ matrix.python-version }}
 
@@ -29,7 +31,7 @@ jobs:
       uses: ts-graphviz/setup-graphviz@v1
 
     - name: Setup Fortran Package Manager
-      uses: fortran-lang/setup-fpm@v4
+      uses: fortran-lang/setup-fpm@v5
       with:
         github-token: ${{ secrets.GITHUB_TOKEN }}
 
@@ -44,6 +46,9 @@ jobs:
       if: contains( matrix.os, 'ubuntu')
       run: |
         sudo apt-get install lcov
+        sudo add-apt-repository ppa:ubuntu-toolchain-r/test
+        sudo apt-get update
+        sudo apt-get install -y gcc-${{ matrix.gcc_v }} gfortran-${{ matrix.gcc_v }}
         sudo update-alternatives \
            --install /usr/bin/gcc gcc /usr/bin/gcc-${{ matrix.gcc_v }} 100 \
            --slave /usr/bin/gfortran gfortran /usr/bin/gfortran-${{ matrix.gcc_v }} \
@@ -58,14 +63,15 @@ jobs:
     - name: Create coverage report
       run: |
         mkdir -p ${{ env.COV_DIR }}
-        lcov --capture --initial --base-directory . --directory build/gfortran_*/ --output-file ${{ env.COV_DIR }}/coverage.base
-        lcov --capture --base-directory . --directory build/gfortran_*/ --output-file ${{ env.COV_DIR }}/coverage.capture
+        mv ./build/gfortran_*/*/* ${{ env.COV_DIR }}
+        lcov --capture --initial --base-directory . --directory ${{ env.COV_DIR }} --output-file ${{ env.COV_DIR }}/coverage.base
+        lcov --capture           --base-directory . --directory ${{ env.COV_DIR }} --output-file ${{ env.COV_DIR }}/coverage.capture
         lcov --add-tracefile ${{ env.COV_DIR }}/coverage.base --add-tracefile ${{ env.COV_DIR }}/coverage.capture --output-file ${{ env.COV_DIR }}/coverage.info
       env:
         COV_DIR: build/coverage
 
     - name: Upload coverage report
-      uses: codecov/codecov-action@v2
+      uses: codecov/codecov-action@v3
       with:
         files: build/coverage/coverage.info
 
@@ -74,7 +80,7 @@ jobs:
 
     - name: Deploy Documentation
       if: github.ref == 'refs/heads/master'
-      uses: JamesIves/github-pages-deploy-action@4.1.0
+      uses: JamesIves/github-pages-deploy-action@v4.4.1
       with:
         branch: gh-pages # The branch the action should deploy to.
         folder: doc  # The folder the action should deploy.
diff --git a/src/slsqp_core.f90 b/src/slsqp_core.f90
index d4c2dbe..373300b 100644
--- a/src/slsqp_core.f90
+++ b/src/slsqp_core.f90
@@ -638,7 +638,7 @@ pure function check_convergence(n,f,f0,x,x0,s,h3,acc,tolf,toldf,toldx,&
     logical :: ok ! temp variable
     real(wp),dimension(n) :: xmx0
 
-    if (h3<acc) then
+    if (h3>=acc) then
         mode = not_converged
     else