diff --git a/examples/wave/wave-eager-mpi.py b/examples/wave/wave-eager-mpi.py
index 4b408bb599c5002a32325f5befd9ab66ab02cee9..10e1301375ae0d569bf61f50ce6db41422c0275c 100644
--- a/examples/wave/wave-eager-mpi.py
+++ b/examples/wave/wave-eager-mpi.py
@@ -60,7 +60,7 @@ def wave_flux(discr, c, w_tpair):
 
     # upwind
     v_jump = np.dot(normal, v.int-v.ext)
-    flux_weak -= flat_obj_array(
+    flux_weak += flat_obj_array(
             0.5*(u.int-u.ext),
             0.5*normal*scalar(v_jump),
             )
@@ -80,10 +80,10 @@ def wave_operator(discr, c, w):
     return (
             discr.inverse_mass(
                 flat_obj_array(
-                    c*discr.weak_div(v),
-                    c*discr.weak_grad(u)
+                    -c*discr.weak_div(v),
+                    -c*discr.weak_grad(u)
                     )
-                -  # noqa: W504
+                +  # noqa: W504
                 discr.face_mass(
                     wave_flux(discr, c=c, w_tpair=interior_trace_pair(discr, w))
                     + wave_flux(discr, c=c, w_tpair=TracePair(
diff --git a/examples/wave/wave-eager-var-velocity.py b/examples/wave/wave-eager-var-velocity.py
index 721211314dfd5931374f0347e90435c624baf129..9ac8a4c4f2a4a47f46d0a62f7c9271a7dda4f140 100644
--- a/examples/wave/wave-eager-var-velocity.py
+++ b/examples/wave/wave-eager-var-velocity.py
@@ -61,12 +61,12 @@ def wave_flux(discr, c, w_tpair):
 
     # upwind
     v_jump = np.dot(normal, v.int-v.ext)
-    flux_weak -= flat_obj_array(
+    flux_weak += flat_obj_array(
             0.5*(u.int-u.ext),
             0.5*normal*scalar(v_jump),
             )
 
-    # FIMXE this flux is only correct for continuous c
+    # FIXME this flux is only correct for continuous c
     dd_allfaces_quad = dd_quad.with_dtag("all_faces")
     c_quad = discr.project("vol", dd_quad, c)
     flux_quad = discr.project(dd, dd_quad, flux_weak)
@@ -91,14 +91,13 @@ def wave_operator(discr, c, w):
 
     dd_allfaces_quad = DOFDesc("all_faces", "vel_prod")
 
-    # FIXME Fix sign issue
     return (
             discr.inverse_mass(
                 flat_obj_array(
-                    discr.weak_div(dd_quad, scalar(c_quad)*v_quad),
-                    discr.weak_grad(dd_quad, c_quad*u_quad)
+                    -discr.weak_div(dd_quad, scalar(c_quad)*v_quad),
+                    -discr.weak_grad(dd_quad, c_quad*u_quad)
                     )
-                -  # noqa: W504
+                +  # noqa: W504
                 discr.face_mass(
                     dd_allfaces_quad,
                     wave_flux(discr, c=c, w_tpair=interior_trace_pair(discr, w))
diff --git a/examples/wave/wave-eager.py b/examples/wave/wave-eager.py
index 7450f435798c249f97dd11e03cd59dbd1e95b542..9da04373ec759fac3c001730d7bc57e1942086cc 100644
--- a/examples/wave/wave-eager.py
+++ b/examples/wave/wave-eager.py
@@ -58,7 +58,7 @@ def wave_flux(discr, c, w_tpair):
 
     # upwind
     v_jump = np.dot(normal, v.int-v.ext)
-    flux_weak -= flat_obj_array(
+    flux_weak += flat_obj_array(
             0.5*(u.int-u.ext),
             0.5*normal*scalar(v_jump),
             )
@@ -78,10 +78,10 @@ def wave_operator(discr, c, w):
     return (
             discr.inverse_mass(
                 flat_obj_array(
-                    c*discr.weak_div(v),
-                    c*discr.weak_grad(u)
+                    -c*discr.weak_div(v),
+                    -c*discr.weak_grad(u)
                     )
-                -  # noqa: W504
+                +  # noqa: W504
                 discr.face_mass(
                     wave_flux(discr, c=c, w_tpair=interior_trace_pair(discr, w))
                     + wave_flux(discr, c=c, w_tpair=TracePair(