Function _takeDev(uint256 tDev) split 3 wallets

Hello community, I would like to know if this is correct?
I have divided the developer fee into 3 wallets mathematically without using structures

function _takeDev(uint256 tDev) private {
        uint256 currentRate =  _getRate();
        uint256 rDev = tDev.mul(currentRate);
        _rOwned[_devWalletAddress] = _rOwned[_devWalletAddress].add((rDev /3) *1);
        if(_isExcluded[_devWalletAddress])
            _tOwned[_devWalletAddress] = _tOwned[_devWalletAddress].add((tDev /3) * 1);

         _rOwned[_MkWalletAddress] = _rOwned[_MkWalletAddress].add((rDev /3) * 1);
        if(_isExcluded[_MkWalletAddress])   
            _tOwned[_MkWalletAddress] = _tOwned[_MkWalletAddress].add((tDev /3) * 1);

        _rOwned[_ChaWalletAddress] = _rOwned[_ChaWalletAddress].add((rDev /3) * 1);
        if(_isExcluded[_ChaWalletAddress])    
            _tOwned[_ChaWalletAddress] = _tOwned[_ChaWalletAddress].add((tDev /3) * 1);
    }

this is to avoid the use of structures and the memory problem (slot 2) due to the use of many variables

on the other hand I have added a wallet so that the liquidity fee is automatically sent to the designated wallet without eliminating the use of
swapAndLiquify
since I have had problems when
setNumTokensSellToAddToLiquidity
is reached the contract is blocked and does not allow (purchase, sale or liquidity) and no very good why is this happening and I have to increase the setNumTokensSellToAddToLiquidity or false setSwapAndLiquifyEnabled so that it runs again.

I have also read that it does not really add liquidity but adds the same amount of the pair causing fluctuations in the price and it makes a lot of sense so I separate it in case one day I need to activate it by simply placing address (this)

function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[_liqWalletAddress] = _rOwned[_liqWalletAddress].add(rLiquidity);
        if(_isExcluded[_liqWalletAddress])
            _tOwned[_liqWalletAddress] = _tOwned[_liqWalletAddress].add(tLiquidity);
    }

I would like to know if _takeDev is correct to divide 3 wallets and if someone can check the code for errors

in principle everything works ok

Thanks in advance

https://testnet.bscscan.com/address/0xb94f743396a22cacf68509f86c4f575de6938647#code