layer_state variable not seem to reflect currently active momentary layers, I am using 20160525 downloaded codes not latest 
        [1] = ACTION_LAYER_TAP_KEY(2, KC_SPC)   //momentary layer 
        [11] = ACTION_LAYER_TOGGLE(2),   //toggle layer, which works fine 
  below is my code, see LSFT_DQT
#include "keymap_common.h"
#include "action_util.h"
#include "action_layer.h"
const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
        
        
    KEYMAP_ALL(
              F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24,
              ESC,      F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,PAUS,    VOLD,VOLU,MUTE,PWR,     HELP,
    GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, JYEN,BSPC,     INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS,    STOP,AGIN,
    FN6, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,     BSLS,     DEL, END, PGDN,    P7,  P8,  P9,  PPLS,    MENU,UNDO,
    FN5,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     NUHS,ENT,                         P4,  P5,  P6,  PCMM,    SLCT,COPY,
    FN7,NUBS,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,     RO,  FN8,          UP,           P1,  P2,  P3,  PEQL,    EXEC,PSTE,
    LCTL,LGUI,LALT,FN2,HANJ,     FN1,      HAEN,FN0, FN3,RALT,RGUI,APP, RCTL,     LEFT,DOWN,RGHT,    P0,       PDOT,PENT,    FIND, CUT
    ),
    
    
    [1] = \
    KEYMAP_ALL(
              F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24,
    ESC,      F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,PAUS,    VOLD,VOLU,MUTE,PWR,     HELP,
    GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, FN0,BSPC,     INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS,    STOP,AGIN,
    TRNS, TRNS,   FN15,   E,   FN19,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,     BSLS,     DEL, END, PGDN,    P7,  P8,  P9,  PPLS,    MENU,UNDO,
    CAPS,FN18,   FN17,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     NUHS,ENT,                         P4,  P5,  P6,  PCMM,    SLCT,COPY,
    TRNS,TRNS,FN10,   TRNS,   FN16,   V,   B,   N,   M,   COMM,DOT, SLSH,     RO,  FN8,          UP,           P1,  P2,  P3,  PEQL,    EXEC,PSTE,
    TRNS,TRNS,TRNS,MHEN,TRNS,     FN11,      TRNS,TRNS, FN3,RALT,RGUI,APP, RCTL,     LEFT,DOWN,RGHT,    P0,       PDOT,PENT,    FIND, CUT
            ),
    
    
    
    
    
    
    
    
    
    
    
    
    [2] = \
    KEYMAP(
    TRNS, TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS, TRNS, TRNS,           PSCR,SLCK,BRK,
    TRNS, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS,      INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS,
    TRNS, ESC,FN15,PGUP,  FN4,F12, JYEN,PGUP,TRNS,HOME, TRNS,  TRNS,  TRNS,  TRNS,     DEL, END, PGDN,    P7,  P8,  P9,
    TRNS,TRNS,  LEFT,PGDN,RGHT,TRNS,  LEFT,DOWN,UP,  RGHT,KP_PLUS,  TRNS,       TRNS,                         P4,  P5,  P6,  PPLS,
    FN7,FN10,  DEL,  EQL,  TRNS,  BSPC,  END,FN9,FN13,FN14, TRNS,          TRNS,          UP,           P1,  P2,  P3,
    FN20,TRNS,TRNS,          TRNS,                     TRNS,TRNS,TRNS, TRNS,     LEFT,DOWN,RGHT,    P0,       PDOT,PENT
            ),
    
    
    [3] =                                       \
    KEYMAP(
    TRNS, TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS, TRNS, TRNS,           PSCR,SLCK,BRK,
    TRNS, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS,      INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS,
    TRNS, TRNS,TRNS,TRNS,  TRNS,TRNS, TRNS,TRNS,F4,TRNS, TRNS,  TRNS,  TRNS,  TRNS,     DEL, END, PGDN,    P7,  P8,  P9,
    TRNS,TRNS,  FN12,DOWN,TAB,TRNS,  FN12,DOWN,UP,  TAB,TRNS,  TRNS,       TRNS,                         P4,  P5,  P6,  PPLS,
    TRNS,TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,TRNS,TRNS,TRNS, TRNS,          TRNS,          UP,           P1,  P2,  P3,
    TRNS,TRNS,TRNS,          TRNS,                     TRNS,TRNS,TRNS, TRNS,     FN12,DOWN,TAB,    P0,       PDOT,PENT
            ),
    
    
    [4] = \
    KEYMAP(
    TRNS, TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS, TRNS, TRNS,           PSCR,SLCK,BRK,
    TRNS, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS,      INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS,
    TRNS, TRNS,TRNS,TRNS,  TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, TRNS,  TRNS,  TRNS,  TRNS,     DEL, END, PGDN,    P7,  P8,  P9,
    TRNS,TRNS,  LEFT,DOWN,RGHT,TRNS,  LEFT,DOWN,UP,  RIGHT,TRNS,  TRNS,       TRNS,                         P4,  P5,  P6,  PPLS,
    TRNS,TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,TRNS,TRNS,TRNS, TRNS,          TRNS,          UP,           P1,  P2,  P3,
    TRNS,TRNS,TRNS,          TRNS,                     TRNS,TRNS,TRNS, TRNS,     LEFT,DOWN,RGHT,    P0,       PDOT,PENT
            ),
    
    
    [5] = \
    KEYMAP(
    TRNS, TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS, TRNS, TRNS,           PSCR,SLCK,BRK,
    TRNS, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS,      INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS,
    NO, FN9,  NO,  NO,  TRNS,  NO,  WH_L,WH_D,MS_U,WH_U,WH_R,WBAK,WFWD,NO,      DEL, END, PGDN,    P7,  P8,  P9,
    LCTL,ACL0,ACL1,ACL2,ACL2,NO,  MS_L,MS_D,MS_U,MS_R,TRNS,NO,       ENT,                         P4,  P5,  P6,  PPLS,
    LSFT,FN10,  NO,  NO,  NO,  BTN3,BTN2,FN10,BTN4,BTN5,NO,            RSFT,          UP,           P1,  P2,  P3,
    LCTL,LGUI,LALT,          BTN1,                    RALT,TRNS,TRNS,RCTL,     LEFT,DOWN,RGHT,    P0,       PDOT,PENT
            ),
    
    [6] =                                       \
    KEYMAP(
    TRNS, TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS,  TRNS, TRNS, TRNS,           PSCR,SLCK,BRK,
    TRNS, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS,      INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS,
    TRNS, ESC,TRNS,PGUP,  FN4,F12, JYEN,PGUP,TRNS,HOME, TRNS,  TRNS,  TRNS,  TRNS,     DEL, END, PGDN,    P7,  P8,  P9,
    TRNS,TRNS,  LEFT,PGDN,RGHT,TRNS,  LEFT,DOWN,UP,  RGHT,KP_PLUS,  TRNS,       TRNS,                         P4,  P5,  P6,  PPLS,
    TRNS,FN10,  DEL,  EQL,  TRNS,  BSPC,  END,FN9,FN13,FN14, TRNS,          TRNS,          UP,           P1,  P2,  P3,
    TRNS,TRNS,TRNS,          TRNS,                     TRNS,TRNS,TRNS, TRNS,     LEFT,DOWN,RGHT,    P0,       PDOT,PENT
            )
};
enum function_id {
        LALT_TAB,
        LSFT_DQT,
        TGGL_MOD,
};
const uint16_t fn_actions[] PROGMEM = {
        [0] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT),
        
        [1] = ACTION_LAYER_TAP_KEY(2, KC_SPC)   ,
        [2] = ACTION_MODS_TAP_KEY(MOD_LALT, KC_RO),
        [3] = ACTION_LAYER_TAP_KEY(1, KC_BSPC)   ,
        [4] = ACTION_LAYER_TOGGLE(6),
        
        [5] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_RBRC),
        [6] = ACTION_FUNCTION_TAP(LALT_TAB),
        [7] = ACTION_FUNCTION_TAP(LSFT_DQT),
        
        
        [8] = ACTION_MODS_TAP_TOGGLE(MOD_RSFT),
        [9] = ACTION_LAYER_TOGGLE(5),
        [10] = ACTION_LAYER_SET_CLEAR(0),
        [11] = ACTION_LAYER_TOGGLE(2),
        [12] = ACTION_MODS_KEY(MOD_RSFT, KC_TAB),
        [13] = ACTION_MODS_KEY(MOD_RSFT | MOD_RCTL, KC_TAB),
        [14] = ACTION_MODS_KEY(MOD_RCTL, KC_TAB),
        
        [15] = ACTION_FUNCTION_OPT(TGGL_MOD, MOD_LGUI),
        [16] = ACTION_FUNCTION_OPT(TGGL_MOD, MOD_LCTL),
        [17] = ACTION_FUNCTION_OPT(TGGL_MOD, MOD_LSFT),
        [18] = ACTION_FUNCTION_OPT(TGGL_MOD, MOD_LALT),
        [19] = ACTION_LAYER_TAP_KEY(5, KC_R),
        [20] = ACTION_MODS_KEY(MOD_LALT, KC_PSCR)
};
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
{
        
        
        
        
    switch (id) {
        case LALT_TAB:
            if (record->event.pressed) {
                if (record->tap.count > 0 && !record->tap.interrupted) {
                        if (record->tap.interrupted) {
                                layer_on(3);
                        register_mods(MOD_BIT(KC_LALT));
                        register_code(KC_TAB);
                        unregister_code(KC_TAB);
                    }
                } else {
                    layer_on(3);
                    register_mods(MOD_BIT(KC_LALT));
                    register_code(KC_TAB);
                        unregister_code(KC_TAB);
                }
            } else {
                if (record->tap.count > 0 && !(record->tap.interrupted)) {
                        
                        
                    register_code(KC_TAB);
                    unregister_code(KC_TAB);
                    
                    
                    record->tap.count = 0;
                } else {
                    unregister_mods(MOD_BIT(KC_LALT));
                    layer_off(3);
                }
            }
            break;
    case TGGL_MOD:
            if (record->event.pressed) {
                    if (opt & get_mods()) {
                            unregister_mods(opt);
                    } else {
                            register_mods(opt);
                    }
            }
            break;
    case LSFT_DQT:
            if (record->event.pressed) {
                if (record->tap.count > 0 && !record->tap.interrupted) {
                        if (record->tap.interrupted) {
                                register_mods(MOD_BIT(KC_LSHIFT));
                    }
                } else {
                        register_mods(MOD_BIT(KC_LSHIFT));
                }
            } else {
                if (record->tap.count > 0 && !(record->tap.interrupted)) {
                        add_weak_mods(MOD_BIT(KC_LSHIFT));
                        if(2 & layer_state)
                        {
                        register_code(KC_2);
                        unregister_code(KC_2);
                    }
                    else
                    {
                        register_code(KC_7);
                        unregister_code(KC_7);
                    }
                    del_weak_mods(MOD_BIT(KC_LSHIFT));
                    record->tap.count = 0;
                } else {
                    unregister_mods(MOD_BIT(KC_LSHIFT));
                }
            }
            break;           
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
    }
}