diff --git a/VERSIONS_HOTLINE/107991 b/VERSIONS_HOTLINE/107991
new file mode 100644
index 0000000000000000000000000000000000000000..d7bbd82747b23bc9c22b918bd99fd6659407003d
--- /dev/null
+++ b/VERSIONS_HOTLINE/107991
@@ -0,0 +1 @@
+ - ticket #107991 : Groupes d'utilisateurs : correction du calcul de l'appartenance pouvant apparaître sur le critère "âge".
\ No newline at end of file
diff --git a/library/Class/User/SearchCriteria/Age.php b/library/Class/User/SearchCriteria/Age.php
index d83a2b80adaf9151775c43787ded41b253b764a6..557bc18f84e03f5547934ac49f81cc3d4db34c87 100644
--- a/library/Class/User/SearchCriteria/Age.php
+++ b/library/Class/User/SearchCriteria/Age.php
@@ -79,7 +79,7 @@ class Class_User_SearchCriteria_Age extends Class_SearchCriteria_Abstract {
 
     if ($this->_hasFrom()
         && ($date = $this->substractYearsToCurrentDate((int)$this->_from))
-        && $user->getNaissance() < $date) {
+        && $user->getNaissance() > $date) {
       return false;
     }
 
@@ -87,7 +87,7 @@ class Class_User_SearchCriteria_Age extends Class_SearchCriteria_Abstract {
       return true;
 
     $date = $this->substractYearsToCurrentDate((int)$this->_to);
-    return $user->getNaissance() <= $date;
+    return $user->getNaissance() >= $date;
   }
 
 
diff --git a/library/Class/UserGroup.php b/library/Class/UserGroup.php
index 82eba663a208cd513aa03bd153c5724be8ecc782..43172fc8bc595ec8088c48b6cd9459b27b99d580 100644
--- a/library/Class/UserGroup.php
+++ b/library/Class/UserGroup.php
@@ -28,7 +28,7 @@ class UserGroupLoader extends Storm_Model_Loader {
   public function save($model) {
     $result = parent::save($model);
     if ($model->isDynamic())
-      $this->_dynamics_of_user_cache = [];
+      $this->resetDynamicsOfUserCache();
 
     return $result;
   }
@@ -123,9 +123,18 @@ class UserGroupLoader extends Storm_Model_Loader {
   }
 
 
+  public function resetDynamicsOfUserCache() {
+    $this->_dynamics_of_user_cache = [];
+    return $this;
+  }
+
+
   protected function _realFindAllDynamicsOf($user) {
     return array_filter(Class_UserGroup::findAllDynamics(),
-                        function($group) use($user) { return $group->hasUser($user); });
+                        function($group) use($user)
+                        {
+                          return $group->hasUser($user);
+                        });
   }
 }
 
diff --git a/tests/library/Class/DynamicUserGroupTest.php b/tests/library/Class/DynamicUserGroupTest.php
index 34968292163fc2851f78364b2bf9e299cee75414..9b6c510df7f9f15505e82703b053e63ae86437ee 100644
--- a/tests/library/Class/DynamicUserGroupTest.php
+++ b/tests/library/Class/DynamicUserGroupTest.php
@@ -109,6 +109,8 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
   public function setUp() {
     parent::setUp();
 
+    Class_AdminVar::set('ENABLED_SEARCH_USER_AGE', 1);
+
     $this->_marseillais = $this
       ->fixture('Class_UserGroup',
                 ['id' => 3,
@@ -136,7 +138,9 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                     ->beModoBib()
                     ->assertSave();
 
-    Class_User_ILSSubscription::setTimeSource(new TimeSourceForTest('2020-01-15 15:00'));
+    $time_source = new TimeSourceForTest('2020-01-15 15:00');
+    Class_User_ILSSubscription::setTimeSource($time_source);
+    Class_User_SearchCriteria_Age::setTimeSource($time_source);
     $this->_gontran = $this->fixture('Class_Users',
                                      ['id' => 22,
                                       'login' => 'gontran',
@@ -144,6 +148,7 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                                       'id_site' => 1,
                                       'idabon' => '111',
                                       'statut' => 1,
+                                      'naissance' => '2000-01-01',
                                       'role_level' => ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB,
                                       'date_fin' => '2050-01-01'
                                      ]);
@@ -232,6 +237,35 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                                            'search_role_level' => ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB,
                                            'search_end_subscription_days'=> 10
                                            ])]);
+
+    $this->_minors = $this
+      ->fixture('Class_UserGroup',
+                ['id' => 20,
+                 'libelle' => 'Mineurs',
+                 'group_type' => Class_UserGroup::TYPE_DYNAMIC,
+                 'filters' => json_encode([
+                                           'search_age_debut' => 0,
+                                           'search_age_fin'=> 17
+                                           ])]);
+
+
+    $this->_adults = $this
+      ->fixture('Class_UserGroup',
+                ['id' => 21,
+                 'libelle' => 'Adultes',
+                 'group_type' => Class_UserGroup::TYPE_DYNAMIC,
+                 'filters' => json_encode([
+                                           'search_age_debut' => 18
+                                           ])]);
+
+    Class_UserGroup::resetDynamicsOfUserCache();
+  }
+
+
+  public function tearDown() {
+    Class_User_ILSSubscription::setTimeSource(null);
+    Class_User_SearchCriteria_Age::setTimeSource(null);
+    parent::tearDown();
   }
 
 
@@ -246,6 +280,8 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
             ['_baptiste', '_basketers'],
             ['_gontran', '_searchers'],
             ['_shella', '_subscription_ended'],
+            ['_shella', '_minors'],
+            ['_gontran', '_adults'],
     ];
   }
 
@@ -273,6 +309,8 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
             ['_baptiste', '_marseillais'],
             ['_xavier', '_anneciens'],
             ['_gontran', '_subscription_ended'],
+            ['_shella', '_adults'],
+            ['_gontran', '_minors'],
     ];
   }