diff --git a/bfa_client/src/bfa/node.go b/bfa_client/src/bfa/node.go
index 23f6c084640154cd58c3c390b3d02c488e63519a..93f8c8707bf1276ecd0333c4c1ebc57384a22226 100644
--- a/bfa_client/src/bfa/node.go
+++ b/bfa_client/src/bfa/node.go
@@ -253,6 +253,25 @@ func (node *Node) Votes(blockNumber int64) (votes Proposals) {
 	return
 }
 
+func (node *Node) LastBlockSignedBy(address string, upperLimit int64) (blockNumber int64) {
+	if upperLimit == 0 || !node.IsSealer(address) {
+		return
+	}
+	for i := 0; i < 5; i++ {
+		snapshot := node.SnapshotAtBlock(upperLimit)
+		for number, sealer := range snapshot.Recents {
+			if BytesToHex(sealer[:]) == address {
+				return int64(number)
+			}
+		}
+		upperLimit = int64(snapshot.Number) - int64((len(snapshot.Recents)))
+		if upperLimit <= 0 {
+			return
+		}
+	}
+	return
+}
+
 func (node *Node) SealersStatus(blockNumber int64) (status map[string]*SealerStatus) {
 	if blockNumber == 0 { // Genesis block doesn't have signer
 		return
diff --git a/bfa_client/src/client/bfa_client.go b/bfa_client/src/client/bfa_client.go
index eac8434165334385cd9b04c6ebdc34e54bcea9de..4820b57fb2db7711d7ba504ac638583d5b9745f2 100644
--- a/bfa_client/src/client/bfa_client.go
+++ b/bfa_client/src/client/bfa_client.go
@@ -358,17 +358,22 @@ func propose() {
 
 func status() {
 	nodeStatus := struct {
-		Enode       string              `json:"enode"`
-		Network     uint64              `json:"network"`
-		Genesis     string              `json:"genesis"`
-		BFANetwork  bool                `json:"bfaNetwork"`
-		BFAGenesis  bool                `json:"bfaGenesis"`
-		Accounts    map[string]*big.Int `json:"accounts"`
-		Coinbase    string              `json:"coinbase"`
-		IsSealer    bool                `json:"isSealer"`
-		IsMining    bool                `json:"isMining"`
-		BlockNumber int64               `json:"blockNumber"`
-		PeerCount   uint64              `json:"peerCount"`
+		Enode                   string              `json:"enode"`
+		Network                 uint64              `json:"network"`
+		Genesis                 string              `json:"genesis"`
+		BFANetwork              bool                `json:"bfaNetwork"`
+		BFAGenesis              bool                `json:"bfaGenesis"`
+		Accounts                map[string]*big.Int `json:"accounts"`
+		Coinbase                string              `json:"coinbase"`
+		IsSealer                bool                `json:"isSealer"`
+		IsMining                bool                `json:"isMining"`
+		BlockNumber             int64               `json:"blockNumber"`
+		Time                    int64               `json:"timestamp"`
+		DateTime                string              `json:"datetime"`
+		LastBlockSigned         int64               `json:"lastBlockSigned,omitempty"`
+		LastTimeSigned          int64               `json:"lastTimeSigned,omitempty"`
+		DateTimeLastBlockSigned string              `json:"datetimeLastSigned,omitempty"`
+		PeerCount               uint64              `json:"peerCount"`
 	}{
 		Accounts: make(map[string]*big.Int),
 	}
@@ -384,8 +389,19 @@ func status() {
 	}
 	nodeStatus.Coinbase, _ = node.Coinbase()
 	nodeStatus.BlockNumber = node.BlockNumber()
+	header := node.HeaderByNumber(nodeStatus.BlockNumber)
+	nodeStatus.Time = header.Time.Int64()
+	nodeStatus.DateTime = time.Unix(nodeStatus.Time, 0).Format("2006-01-02 15:04:05")
 	nodeStatus.IsSealer = node.IsSealer(bfa.Self)
 	nodeStatus.IsMining = node.IsMining()
+	if nodeStatus.IsSealer {
+		nodeStatus.LastBlockSigned = node.LastBlockSignedBy(nodeStatus.Coinbase, nodeStatus.BlockNumber)
+		if nodeStatus.LastBlockSigned != 0 {
+			header := node.HeaderByNumber(nodeStatus.LastBlockSigned)
+			nodeStatus.LastTimeSigned = header.Time.Int64()
+			nodeStatus.DateTimeLastBlockSigned = time.Unix(nodeStatus.LastTimeSigned, 0).Format("2006-01-02 15:04:05")
+		}
+	}
 	nodeInfo := node.NodeInfo()
 	nodeStatus.Enode = nodeInfo.Enode
 	ethInfo := nodeInfo.Protocols["eth"].(map[string]interface{})