diff --git a/src/MetaVesTController.sol b/src/MetaVesTController.sol
index ffd8ff9..77d5f6f 100644
--- a/src/MetaVesTController.sol
+++ b/src/MetaVesTController.sol
@@ -55,7 +55,7 @@ contract metavestController is SafeTransferLib {
         bool isPending;
         bytes32 dataHash;
         address[] voters;
-        mapping(address => bool) changeApplied;
+        mapping(address => uint256) appliedProposalCreatedAt;
         mapping(address => uint256) voterPower;
     }
 
@@ -143,7 +143,7 @@ contract metavestController is SafeTransferLib {
         if (isMetavestInSet(_grant)) {
             bytes32 set = getSetOfMetavest(_grant);
             MajorityAmendmentProposal storage proposal = functionToSetMajorityProposal[msg.sig][set];
-            if(proposal.changeApplied[_grant]) revert MetaVesTController_AmendmentCanOnlyBeAppliedOnce();
+            if(proposal.appliedProposalCreatedAt[_grant] == proposal.time) revert MetaVesTController_AmendmentCanOnlyBeAppliedOnce();
             if (_data.length>32 && _data.length<69)
             {
                 if (!proposal.isPending || proposal.totalVotingPower>proposal.currentVotingPower*2 || keccak256(_data[_data.length - 32:]) != proposal.dataHash ) {
@@ -606,7 +606,6 @@ contract metavestController is SafeTransferLib {
             uint256 _votingPower = BaseAllocation(sets[nameHash].at(i)).getMajorityVotingPower();
             totalVotingPower += _votingPower;
             proposal.voterPower[sets[nameHash].at(i)] = _votingPower;
-            proposal.changeApplied[sets[nameHash].at(i)] = false;
         }
         proposal.totalVotingPower = totalVotingPower;
 
@@ -659,7 +658,7 @@ contract metavestController is SafeTransferLib {
         {
             bytes32 set = getSetOfMetavest(_grant);
             MajorityAmendmentProposal storage proposal = functionToSetMajorityProposal[_msgSig][set];
-            proposal.changeApplied[_grant] = true;
+            proposal.appliedProposalCreatedAt[_grant] = proposal.time;
             setMajorityVoteActive[set] = false;
         }
         delete functionToGranteeToAmendmentPending[_msgSig][_grant];
diff --git a/test/amendement.t.sol b/test/amendement.t.sol
index d98a21a..205c60f 100644
--- a/test/amendement.t.sol
+++ b/test/amendement.t.sol
@@ -736,6 +736,46 @@ contract MetaVestControllerTest is Test {
         controller.updateMetavestTransferability(mockAllocation3, true);
     }
 
+    function testProposeMajorityMetavestAmendmentReAdd() public {
+        address mockAllocation2 = createDummyVestingAllocation();
+        address mockAllocation3 = createDummyVestingAllocation();
+        bytes4 msgSig = bytes4(keccak256("updateMetavestTransferability(address,bool)"));
+        bytes memory callData = abi.encodeWithSelector(msgSig, mockAllocation2, true);
+
+        vm.prank(authority);
+        controller.addMetaVestToSet("testSet", mockAllocation2);
+        controller.addMetaVestToSet("testSet", mockAllocation3);
+        vm.warp(block.timestamp + 1 days);
+        vm.prank(authority);
+        controller.proposeMajorityMetavestAmendment("testSet", msgSig, callData);
+
+        vm.prank(grantee);
+        controller.voteOnMetavestAmendment(mockAllocation2, "testSet", msgSig, true);
+
+        vm.prank(authority);
+        controller.updateMetavestTransferability(mockAllocation3, true);
+
+        vm.prank(authority);
+        controller.removeMetaVestFromSet("testSet", mockAllocation3);
+      //  vm.prank(authority);
+      //  controller.updateMetavestTransferability(mockAllocation3, true);
+        vm.warp(block.timestamp + 90 days);
+        vm.prank(authority);
+        controller.proposeMajorityMetavestAmendment("testSet", msgSig, callData);
+
+        vm.prank(grantee);
+        controller.voteOnMetavestAmendment(mockAllocation2, "testSet", msgSig, true);
+
+        vm.prank(authority);
+        controller.updateMetavestTransferability(mockAllocation2, true);
+
+        vm.prank(authority);
+        controller.addMetaVestToSet("testSet", mockAllocation3);
+
+        vm.prank(authority);
+        controller.updateMetavestTransferability(mockAllocation3, true);
+    }
+
         function testFailNoPassProposeMajorityMetavestAmendment() public {
         address mockAllocation2 = createDummyVestingAllocation();
         address mockAllocation3 = createDummyVestingAllocation();