diff --git a/src/modules/gmpmod/mpz_glue.c b/src/modules/gmpmod/mpz_glue.c
index c3eca5f260764430ab435e36acd7fb3e0c029316..c73f1c644a2c32c7ad8223b47c803c00b515795b 100644
--- a/src/modules/gmpmod/mpz_glue.c
+++ b/src/modules/gmpmod/mpz_glue.c
@@ -359,7 +359,7 @@ static void mpzmod_powm(INT32 args)
     error("Too few arguments to mpzmod->powm()\n");
 
   tmp=get_tmp();
-  mpz_powm(tmp, tmp, get_mpz(sp-args), get_mpz(sp+1-args));
+  mpz_powm(tmp, THIS, get_mpz(sp-args), get_mpz(sp+1-args));
   return_temporary(args);
 }
 
diff --git a/src/modules/gmpmod/testsuite.in b/src/modules/gmpmod/testsuite.in
index 0cca2dbfa8d6f37f1d1cc042c20d7e26dbffaaea..18143ee0274cd5a3e4105db70ed65845beffce76 100644
--- a/src/modules/gmpmod/testsuite.in
+++ b/src/modules/gmpmod/testsuite.in
@@ -25,6 +25,7 @@ cond( [[ master()->programs["/precompiled/mpz"] ]],
   test_eq((int)clone(MPZ,17),17)
   test_false(clone(MPZ,0))
   test_true(clone(MPZ,1))
+  test_eq(clone(MPZ,17)->powm(2,4711),290)
 
   define([[mpz_test_cmp]],[[
     test_cmp(clone(MPZ,$1), $2)