Tanzania, South Korea boost bilateral ties with new agreements

Samia Korea pic

President Samia Suluhu Hassan and her South Korean counterpart Yoon Suk Yeol witness as Industry and Trade minister Ashatu Kijaji and South Korean Trade minister Inkyo Cheong sign a joint declaration to start negotiations on an economic partnership agreement between the two countries in Seoul on June 2, 2024.  PHOTO | STATE HOUSE

What you need to know:

  • President Samia Suluhu Hassan and her South Korean counterpart Yoon Suk Yeol on Sunday witnessed the signing of a several agreements which aim at bolstering economic cooperation between the two nations

Dar es Salaam. President Samia Suluhu Hassan and her South Korean counterpart Yoon Suk Yeol on Sunday witnessed the signing of a several agreements which aim at bolstering economic cooperation between the two nations.

The agreements include a contract which will see Tanzania secure a $2.5 billion (Sh6.5 trillion) loan from South Korea over the next five years.

“The funds, provided under Korea’s Economic Development Cooperation Fund (EDCF), are earmarked for various infrastructure projects across Tanzania,” presidential communications director Zuhura Yunus said in a statement.

The soft loan contract was one of seven agreements that were expected to be signed when President Hassan embarked on a six-day official and working visit to South Korea.

In addition to the loan agreement, Tanzania and South Korea also signed two memorandums of understanding (MoUs) and a joint declaration to initiate an economic partnership agreement (EPA).

The EPA is aimed at enhancing strategic relations in trade, investment, industry and transportation. This makes Tanzania one of only three African nations, alongside Morocco and Kenya, to enter into such discussions with South Korea.

The MoUs signed on Sunday include a collaboration on the blue economy.

The partnership will see Tanzania and South Korea work together in fishing, marine product processing, construction of fishing ports, as well as technology and marine research, according to the statement.

Also, Tanzania’s Minerals ministry and South Korea’s Ministry of Trade, Industry and Energy signed an MoU for cooperation in the mining of strategic minerals.

The cooperation will focus on research, investment, mining activities and enhancing the value addition of strategic minerals such as nickel, lithium and graphite in Tanzania.

The development comes as Tanzania is now conducting in-depth geophysical research to cover at least 50 percent of its land by the year 2030 to identify mineral potential.

Currently, only 16 percent of the country’s land has been surveyed, according to Minerals ministry, and by identifying more mineral reserves, the government is seeking to boost revenue generated from the sector.

At Sunday’s signing ceremony, President Hassan proposed new areas for cooperation, including the development of natural gas, the creative sectors such as arts and films, and the opening of the South Korean job market to Tanzanian youth through the Employment Permit System (EPS) programme.

She concluded her two-day official engagement on Sunday and she is set to commence a working visit where she will attend the Korea-Africa summit that will bring together Heads of State and Government.

President Hassan is also scheduled to address the summit and deliver remarks in a panel on strengthening food and mineral security.

Foreign Affairs and East African Cooperation minister January Makamba said last week that the summit is important for opening up trade cooperation opportunities between African countries and Korea, which has selected seven priority nations to attend the event.

Economic diplomacy will be central to the visit, with President Hassan meeting leaders from top Korean companies to explore partnerships in energy, infrastructure, and film production, he said.

Mr Makamba added that Tanzania and South Korea have had 32 years of cooperation in education, health, and infrastructure and after the leaders’ discussions, more cooperation agreements will be signed.

* * If no #mcl-market-ticker element exists, the widget inserts itself right * after this var sel = thisScript && thisScript.getAttribute("data-target"); if (sel) { var t = document.querySelector(sel); if (t) return t; } // 2) A dedicated mount element the host page provides. var el = document.getElementById(CONFIG.targetId); if (el) return el; // 3) Fallback: insert right after this script tag. el = document.createElement("div"); el.id = CONFIG.targetId; if (thisScript && thisScript.parentNode) { thisScript.parentNode.insertBefore(el, thisScript.nextSibling); } else { document.body.appendChild(el); } return el; } // ---- Data pipeline (identical logic to the standalone banner) ------------ function apiUrl(path) { if (!path) return path; if (/^https?:\/\//i.test(path)) return path; return CONFIG.apiBase + (path.charAt(0) === "/" ? "" : "/") + path; } function toNum(v) { var n = parseFloat(String(v == null ? "" : v).replace(/,/g, "")); return isFinite(n) ? n : null; } function fmtNum(v) { var n = parseFloat(String(v).replace(/,/g, "")); if (!isFinite(n)) return String(v == null ? "" : v); var d = Math.abs(n) >= 1 ? 2 : 4; return n.toLocaleString("en-US", { minimumFractionDigits: d, maximumFractionDigits: d }); } function changeClass(d) { if (d == null || Math.abs(d) < 1e-9) return "flat"; return d > 0 ? "up" : "down"; } function arrow(d) { if (d == null || Math.abs(d) < 1e-9) return "▬"; return d > 0 ? "▲" : "▼"; } async function fetchFiles(category, count) { var res = await fetch(apiUrl("/api/files?category=" + category)); if (!res.ok) throw new Error("list " + category + " " + res.status); var list = await res.json(); return Array.isArray(list) ? list.slice(0, count || 1) : []; } async function parseSheet(meta) { var res = await fetch(apiUrl(meta.url)); if (!res.ok) throw new Error("download " + res.status); var buf = await res.arrayBuffer(); var wb = XLSX.read(buf, { type: "array" }); return XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], { defval: "" }); } function buildStocks(rows) { var items = []; rows.forEach(function (r) { var sym = r["Symbol"] || r["symbol"]; if (!sym) return; var close = toNum(r["Close"]); if (close == null) return; var prev = toNum(r["Prev Close"] || r["Previous Close"]); var delta = prev != null ? close - prev : null; var pct = (delta != null && prev) ? (delta / prev) * 100 : null; items.push({ sym: sym, val: fmtNum(close), delta: delta, pct: pct }); }); return items; } function buildForex(rows, prevRows) { var pmean = {}; (prevRows || []).forEach(function (r) { if (r["Currency"]) pmean[r["Currency"]] = toNum(r["Mean"]); }); var items = []; rows.forEach(function (r) { var cur = r["Currency"]; if (!cur) return; var mean = toNum(r["Mean"]), buy = toNum(r["Buying"]), sell = toNum(r["Selling"]); if (buy == null && sell == null && mean == null) return; var pv = pmean[cur]; var ref = mean != null ? mean : (buy != null && sell != null ? (buy + sell) / 2 : (buy != null ? buy : sell)); var delta = pv != null ? ref - pv : null; var pct = (delta != null && pv) ? (delta / pv) * 100 : null; items.push({ sym: cur, buy: buy != null ? fmtNum(buy) : "—", sell: sell != null ? fmtNum(sell) : "—", delta: delta, pct: pct }); }); var order = CONFIG.majorCurrencies; items.sort(function (a, b) { var ia = order.indexOf(a.sym), ib = order.indexOf(b.sym); if (ia === -1) ia = 999; if (ib === -1) ib = 999; if (ia !== ib) return ia - ib; return a.sym < b.sym ? -1 : 1; }); return items; } function chgHTML(it) { var cls = changeClass(it.delta); if (it.delta == null) return ''; var pctTxt = it.pct != null ? (it.pct >= 0 ? "+" : "") + it.pct.toFixed(2) + "%" : ""; return '' + arrow(it.delta) + " " + pctTxt + ""; } function stockHTML(it) { return '' + it.sym + '' + it.val + "" + chgHTML(it) + ""; } function forexHTML(it) { return '' + it.sym + "" + '' + CONFIG.labels.buy + ' ' + it.buy + ' · ' + CONFIG.labels.sell + ' ' + it.sell + "" + chgHTML(it) + ""; } function pill(t, k) { return '' + t + ""; } function render(track, stocks, forex, dateLabel) { if ((!stocks || !stocks.length) && (!forex || !forex.length)) { track.innerHTML = '
' + CONFIG.labels.unavailable + "
"; track.style.animation = "none"; return; } var parts = []; if (stocks && stocks.length) { parts.push(pill(CONFIG.labels.stocks)); stocks.forEach(function (s) { parts.push(stockHTML(s)); }); } if (forex && forex.length) { parts.push(pill(CONFIG.labels.forex, "forex")); forex.forEach(function (f) { parts.push(forexHTML(f)); }); } if (dateLabel) parts.push('' + CONFIG.labels.updated + ": " + dateLabel + ""); var content = parts.join(""); track.innerHTML = content + content; // duplicated for a seamless loop requestAnimationFrame(function () { var dur = Math.max(20, Math.round((track.scrollWidth / 2) / CONFIG.pxPerSecond)); track.style.animation = "none"; void track.offsetWidth; track.style.animation = "mcl-scroll " + dur + "s linear infinite"; }); } async function load(track) { try { var results = await Promise.allSettled([fetchFiles("hisa", 1), fetchFiles("fedha", 2)]); var stocks = [], forex = [], dateLabel = ""; if (results[0].status === "fulfilled" && results[0].value.length) { var hf = results[0].value[0]; dateLabel = hf.date || ""; stocks = buildStocks(await parseSheet(hf)); } if (results[1].status === "fulfilled" && results[1].value.length) { var ff = results[1].value; var curRows = await parseSheet(ff[0]); var prevRows = ff[1] ? await parseSheet(ff[1]) : []; forex = buildForex(curRows, prevRows); if (!dateLabel) dateLabel = ff[0].date || ""; } render(track, stocks, forex, dateLabel); } catch (e) { if (!track.querySelector(".mcl-item")) { track.innerHTML = '
' + CONFIG.labels.unavailable + "
"; track.style.animation = "none"; } } } function mountAndRun() { injectStyle(); var mount = getMount(); mount.innerHTML = '
' + '
' + CONFIG.brand + "" + '' + CONFIG.live + "
" + '
' + CONFIG.labels.unavailable + "
"; var track = mount.querySelector(".mcl-track"); function go() { load(track); setInterval(function () { load(track); }, CONFIG.refreshMs); } if (window.XLSX) { go(); return; } var sc = document.createElement("script"); sc.src = "https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"; sc.onload = go; sc.onerror = function () { track.innerHTML = '
' + CONFIG.labels.unavailable + "
"; }; (document.head || document.documentElement).appendChild(sc); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", mountAndRun); } else { mountAndRun(); } })();