Index: psi4/external/upstream/gau2grid/CMakeLists.txt
===================================================================
--- psi4.orig/external/upstream/gau2grid/CMakeLists.txt
+++ psi4/external/upstream/gau2grid/CMakeLists.txt
@@ -1,4 +1,4 @@
-find_package(gau2grid 1.2 CONFIG QUIET COMPONENTS gaussian)
+find_package(gau2grid 2.0 CONFIG QUIET)
 
 if(${gau2grid_FOUND})
     get_property(_loc TARGET gau2grid::gg PROPERTY LOCATION)
Index: psi4/psi4/src/psi4/libfock/points.cc
===================================================================
--- psi4.orig/psi4/src/psi4/libfock/points.cc
+++ psi4/psi4/src/psi4/libfock/points.cc
@@ -643,6 +643,10 @@ void BasisFunctions::compute_functions(s
     double* x = block->x();
     double* y = block->y();
     double* z = block->z();
+    double* xyz = new double[npoints * 3];
+    ::memcpy(xyz, x, sizeof(double) * npoints);
+    ::memcpy(xyz + npoints, y, sizeof(double) * npoints);
+    ::memcpy(xyz + 2 * npoints, z, sizeof(double) * npoints);
 
     const std::vector<int>& shells = block->shells_local_to_global();
 
@@ -701,15 +705,16 @@ void BasisFunctions::compute_functions(s
         // Make new pointers, gg computes along rows so we need to skip down `nval` rows.
         size_t row_shift = nvals * npoints;
         double* phi_start = tmpp + row_shift;
+        const int order = (int)puream_ ? GG_SPHERICAL_GAUSSIAN : GG_CARTESIAN_CCA;
 
         // Copmute collocation
         if (deriv_ == 0) {
-            gg_collocation(L, npoints, x, y, z, nprim, norm, alpha, center.data(), (int)puream_, phi_start);
+            gg_collocation(L, npoints, xyz, 1, nprim, norm, alpha, center.data(), order, phi_start);
         } else if (deriv_ == 1) {
             double* phi_x_start = tmp_xp + row_shift;
             double* phi_y_start = tmp_yp + row_shift;
             double* phi_z_start = tmp_zp + row_shift;
-            gg_collocation_deriv1(L, npoints, x, y, z, nprim, norm, alpha, center.data(), (int)puream_, phi_start,
+            gg_collocation_deriv1(L, npoints, xyz, 1, nprim, norm, alpha, center.data(), order, phi_start,
                                   phi_x_start, phi_y_start, phi_z_start);
 
         } else if (deriv_ == 2) {
@@ -722,7 +727,7 @@ void BasisFunctions::compute_functions(s
             double* phi_yy_start = tmp_yyp + row_shift;
             double* phi_yz_start = tmp_yzp + row_shift;
             double* phi_zz_start = tmp_zzp + row_shift;
-            gg_collocation_deriv2(L, npoints, x, y, z, nprim, norm, alpha, center.data(), (int)puream_, phi_start,
+            gg_collocation_deriv2(L, npoints, xyz, 1, nprim, norm, alpha, center.data(), order, phi_start,
                                   phi_x_start, phi_y_start, phi_z_start, phi_xx_start, phi_xy_start, phi_xz_start,
                                   phi_yy_start, phi_yz_start, phi_zz_start);
         }
Index: psi4/psi4/CMakeLists.txt
===================================================================
--- psi4.orig/psi4/CMakeLists.txt
+++ psi4/psi4/CMakeLists.txt
@@ -115,7 +115,7 @@ else()
     message(STATUS "Disabled erd")
 endif()
 
-find_package(gau2grid 1.2 CONFIG REQUIRED COMPONENTS gaussian)
+find_package(gau2grid 2.0 CONFIG REQUIRED)
 get_property(_loc TARGET gau2grid::gg PROPERTY LOCATION)
 list(APPEND _addons ${_loc})
 message(STATUS "${Cyan}Using gau2grid${ColourReset}: ${_loc} (version ${gau2grid_VERSION})")
