diff --git a/gap/perm.gi b/gap/perm.gi
index 376ac1b05..a147835d7 100644
--- a/gap/perm.gi
+++ b/gap/perm.gi
@@ -350,7 +350,9 @@ end;
#! @BeginChunk ThrowAwayFixedPoints
#! This method defines a homomorphism of a permutation group
#! G to the action on the moved points of G if
-#! G does not have too many moved points. In the current setup, the
+#! either G does not have too many moved points, or if G is
+#! primitive and has fixed points.
+#! In the current setup, the
#! homomorphism is defined if the number k of moved
#! points is at most 1/3 of the largest moved point of G,
#! or k is at most half of the number of points on which
@@ -361,12 +363,15 @@ end;
FindHomMethodsPerm.ThrowAwayFixedPoints :=
function( ri, G )
# Check, whether we can throw away fixed points
- local gens,hom,l,n,o;
+ local gens,hom,l,n,largest,o;
gens := GeneratorsOfGroup(G);
l := List(gens,StoredPointsPerm);
n := NrMovedPoints(G);
- if 2*n > Maximum(l) or 3*n > LargestMovedPoint(G) then # we do nothing
+ largest := LargestMovedPoint(G);
+ if (2*n > Maximum(l) or 3*n > largest)
+ and not (IsPrimitive(G) and largest > n)
+ then # we do nothing
return NeverApplicable;
fi;
o := MovedPoints(G);